- 计算机只能处理数字,要处理文本,只能转换成数字蔡能处理.计算机中8个bit为一个字节,所以一个字节能表示的最大的数字是2**8-1=255
- 计算机是美国人发明的,英文字母加数字和常用符号小于255个,一个字节就能表示了,所以ASCII编码采用一个字节对字符进行编码
- 但中国等国家的文字数量是远远超过255个的,用ASCII是远远 不够的,所以中国制定了GB2312编码,为了兼容ascII,也把ascII包含了进去,同样,日本,韩国等上百个国家为了解决本国的编码问题也发展了一套多字节的编码,标准越来越多,如果一段文字出现多个语言的混合显示就很容易出现乱码.
- 于是unicode出现了,将所有的语言统一到一套编码里.
- 看一下ascII和unicode编码:
- 字母A的ascII二进制是0100 0001,十进制是65
- 汉字'中'的unicode编码二进制表示是01001110 00101101,两个字节,远远超出ascII的一个字节表示范围,十进制表示是20013.
- A用unicode编码只需要在ascII的基础上前边补上一个字节的0,00000000 00101101.
- 乱码问题虽然解决了,但是如果内容全是英文,unicode编码比ascII需要多一倍的空间,同时进行网络传输也要多浪费一倍的带宽.
- 所以出现了可变长编码'utf-8',表示英文就占用一个字节,汉字就占3个字节,特别生僻的变成4-6个字节,如果字符串中有大量的英文,utf8节省空间和带宽的左右就非常明显.
- ascII保存在文件里或者在网上传输固然节省了空间和流量,但是在内存中处理的时候,同一个字符串有的字符占1个字节,有的字符占2个字节,有的字符占3个字节等等,就给程序处理内存带来极大的麻烦,所以在内存中始终用unicode编码,只有当保存为文件或者进行网络传输时,再转换为ascII编码.Python3中字符在内存中默认都是用unicode编码
python字符串编码的理解
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...