Python编码问题

乱码根源:

  • 本地内存中编码方式都是“Unicode”,这是系统自动设定的!
  • 而在本地硬盘(保存到文件中)编码方式,是要设定的,而且为了“最高性价比”,多要设定为utf-8;
  • 网络中是各种各样的编码方式,拉取到本地,会自动“解释”为Unicode,在控制台输出,这些都还是在内存中;
  • 即使以UTF-8编码方式保存文件到本地,当读取的时候,本地也只会把文件当做基本的编码方式,如gbk,所以,仍然要编码为UTF-8,再交给本地自动转换为Unicode!

总结:

在计算机的世界,Unicode是“普通话”,其他的,像UTF-8、gbk什么的都是方言,而有的方言还解释不成普通话(因为有的方言,如gbk,太有“地方特色”,一些“俚语”在普通话里不能“写出来”,表达的含义,可意会不可言传 ),所以计算机会“说错话”,毕竟计算机还只是个机器,它只认普通话;同时,这个机器还蛮自动化的,会自动将方言转换为普通话,而在一些“认不出来”的情况下,就直接报错了,所以,如果出错的时候将自己想要讲的话转换(编译)为其它方言就行了,系统会再识别一次!


在Python中,有常用三套编码方式:

  • ASCII:一个字节(byte),也就是8个比特(二进制八位),只能代表128个英文字符
  • Unicode:两个字节(byte),及其特殊的会有三到四个,可以认为,这套编码方式包含了这个世界所有的字符
  • UTF-8 :可变长字节,也就是说,如果一个字符用一个字节就能表示(如英文),就用一个;而必须用三个字节才能表示(如中文)就用两个

三套编码方案的优缺点:

  • ASCII
    优点:比较节约资源,只用一个字节
    缺点:能表示的字符只有英文,所以其他国家人民就不能“说话了”!
  • Unicode
    优点:包含了这个世界上所有的字符(基本可以这么认为),每个人都有“说话的权利”
    缺点:太浪费资源,无论高矮胖瘦,都能装下,那这个“容器”就只能“将就”最高最胖的那个,所以“瘦子”就“节约”了好多空间 @_@
  • UTF-8
    优点:为每种语言“个性化定制”容器,性价比高,所以在网络传输中常用UTF-8
    缺点:。。。。。。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 阅读python源代码的时候不难发现许多文件开头都有这样一行内容: 如果想在python中使用中文,这样的一行声明...
    Fengya阅读 4,114评论 0 50
  • 几个基本概念 bit二进制位, 是计算机内部数据储存的最小单位,11010100是一个8位二进制数。一个二进制位只...
    西电大侠阅读 8,921评论 1 8
  • 什么是编码 任何一种语言、文字、符号等等,计算都是将其以一种类似字典的形式存起来的,比如最早的计算机系统将英文文字...
    随风化作雨阅读 5,476评论 1 2
  • 1.强化你的注意力。 注意力这个资源是比时间,比金钱,比其他任何身在之物都重要的一个资源。 2.为自己做事,而不是...
    得到一只猫阅读 3,233评论 0 0
  • 说明: 字典和列表一样,也能够存储多个数据 列表中找某个元素时,是根据下标进行的 字典中找某个元素时,是根据'名字...
    lynnyq阅读 2,166评论 0 0