• 字符编码


    字符编码针对的是文字

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

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

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

    人在操作计算机的时候输入的是人能够看懂的字符
    但是计算机只能识别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)

    万般皆下品,唯有读书高!
  • 相关阅读:
    android shape的使用(转)
    使用BigDecimal进行精确运算以及格式化输出数字
    MyTextBoxControls正式推出第一个版本T1.1.0.1
    排列组合与回溯算法
    弹出一个层屏蔽页面登录
    一级MS软件下载
    c#:文件对话框(FileDialog)
    采用正则表达式获取图片地址
    超级实用且不花哨的js代码大全
    常用到的一些正则表达式
  • 原文地址:https://www.cnblogs.com/s686zhou/p/11139089.html
Copyright © 2020-2023  润新知