Python3学习笔记之字符编码

1.  字码编符

    1.  什么是字符编码

        计算机只认识0和1

        把字符翻译成数字。这个翻译过程就叫做字符编码。

    2.  字符编码的发展史与分类

        计算机由美国人发明,最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系。最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

        

        后来拉丁文也进入了ASCII编码。但是ASCII无法显示中文,于是中国人就发明了GB2312,用两个字节表示中文,也就产生了2的16次方-1个,表示中文。

        日本人发明了自己的字符编码,韩国人也有自己的字符编码,但是各国的字符编码都不能相互读出来,所以产生了乱码。

        于是在这种情况下,为了统一各国的字符编码,就产生了一种unicode,用两个字节表示所有的字符,不管是英文,中文,日文,韩文,都用两个字节来表示。

        unicode这种方式,会导致英文字符,前8位的浪费。所以又产生了UTF-8,可变长的字符编码,对英文字符用一个字节,对中文字符用3个字节。

        unicode:简单粗暴,执行速度快,但是浪费空间UTF-8:执行速度慢,因为它得检查字符,节约空间。

        当内存从硬盘读取数据的时候,优先考虑的是速度,所以内存内部使用的是unicode.

        当UTF-8翻译成unicode的时候,叫做:decode,过程叫做解码。

        当内存保存数据到硬盘的时候,优先考虑的是空间,所以硬盘使用的是UTF-8或者其他国家的编码。

        当unicode翻译成UTF-8的时候,叫做:encode,过程叫做编码。存的时候用什么编码,读的时候就用什么编码。

        使用utf-8时,英文占用1个字节,中文占用3个字节,生僻字占用4-6字节

3.  python解释器默认字符编码

    1.  读文件的阶段:

        python2解释器默认编码是ASCII

        python3解释器默认编码是UTF-8

        所以要在python文件开头,加#coding:指定文件保存时候的编码

    2.  执行文件的阶段

        执行python代码的时候,python3的字符串是unicode编码.

          x='杨建'

          print(type(x.encode('gbk')))

          只有unicode才可以encode为其他编码。

        执行python代码的时候,python2的字符串是bytes编码.所以在python2的字符串前面加u.

          x=u'你好' 这样就成为了unicode编码

        

4.  系统终端默认字符编码

    windows终端编码gbk

    linux终端编码utf-8

posted @ 2023-01-10 16:38  奋斗史  阅读(60)  评论(0)    收藏  举报