• 字符编码


    字符编码针对的是文字

    那也就意味着这里需要考虑视频文件,音频文件等其他文件吗?显然不需要

    字符编码只跟文本文件有关

    文本编辑器的输入和输出是两个过程

    人在操作计算机的时候输入的是人能够看懂的字符
    但是计算机只能识别010101这样的二进制数据,那么
    输入的字符 >>>(字符编码表)>>> 二进制数字、

    字符编码表就是字符与数字的对应关系
    a 0
    b 1
    a 00
    b 01
    c 11
    d 10

    ASCII码表
    用八位二进制表示一个英文字符 所有的英文字符+符号最多也就在125位左右
    0000 0000
    1111 1111


    GBK
    用2Bytes表示一个中文字符 还是用1Bytes表示一个英文字符
    0000 0000 0000 0000
    1111 1111 1111 1111 最多能表示65535个字符

    基于上面的推导步骤 任何一个国家要想让计算机支持本国语言都必须自己创建一个字符与数字的对应关系
    日本人 shift
    韩国人 fuck

    万国码unicode
    统一用2Bytes表示所有的字符
    a 0000 0000 0010 1010

    1.浪费存储空间
    2.io次数增减,程序运行效率降低(致命)


    当内存中的unicode编码格式数据存到硬盘的时候,会按照utf-8编码
    unicode transformation format

    会将unicode的英文字符由原来的2Bytes变成1Bytes
    会将unicode中文字符由原来的2Bytes变成3Bytes


    现在的计算机
    内存都是unicode
    硬盘都是utf-8

    (需要掌握的)
    unicode的两个特点
    1.用户在输入的时候,无论输什么字符都能够兼容万国字符
    2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应关系

    (必须掌握的)
    数据由内存保存到硬盘
    1.内存中的unicode格式二进制数字 >>>>编码(encode)>>>>> utf-8格式的二进制数据

    硬盘中的数据由硬盘读到内存
    1.硬盘中的utf-8格式的二进制数据 >>>>>解码(decode)>>>>> 内存中unicode格式的二进制数据






    (******)
    保证不乱码在于
    文本文件以什么编码编的就以什么编码解

    python2
    将py文件按照文本文件读入解释器中默认使用ASCII码(因为在开发python2解释器的unicode还没有盛行)
    python3
    将py文件按照文本文件读入解释器中默认使用utf-8

    文件头
    # coding:utf-8
    1.因为所有的编码都支持英文字符,所以文件头才能够正常生效

    基于Python解释器开发的软件,只要是中文,前面都需要加一个u
    为了的就是讲python2(当你不指定文件头的时候,默认用ASCII存储数据,如果指定文件头那么就按照文件头的编码格式存储数据)



    python3中字符串默认就是unicode编码格式的二进制数

    补充:
    1.pycharm终端用的是utf-8格式
    2.windows终端采用的是gbk

    x = '上'
    res1 = x.encode('gbk') # 将unicode编码成可以存储和传输的utf-8的二进制数据
    print(res1) # b'\xe4\xb8\x8a'
    # bytes类型 字节串类型 你就把它当成二进制数据即可
    res2 = res1.decode('gbk') # 将硬盘中的utf-8格式的二进制数据解码成unicode格式的二进制数据
    print(res2)

    万般皆下品,唯有读书高!
  • 相关阅读:
    APICloud联合腾讯云推出“云主机解决方案“,各种福利等你拿
    WiFi模块Demo(新手教程)图文详解模块使用教程
    移动APP 微信支付完整过程(wxPay 方案一)
    APICloud开发者进阶之路 | txLive模块(直播类)试用分享
    解决R语言临时文件目录的问题(tempdir、tempfile)
    CentOS下SparkR安装部署:hadoop2.7.3+spark2.0.0+scale2.11.8+hive2.1.0
    Extending sparklyr to Compute Cost for K-means on YARN Cluster with Spark ML Library
    Running R jobs quickly on many machines(转)
    R语言快速深度学习进行回归预测(转)
    sparklyr包:实现Spark与R的接口
  • 原文地址:https://www.cnblogs.com/s686zhou/p/11139089.html
Copyright © 2020-2023  润新知