Python中文乱码详解.doc

Python中文乱码详解.doc

ID:55632109

大小:52.00 KB

页数:10页

时间:2020-05-21

Python中文乱码详解.doc_第1页
Python中文乱码详解.doc_第2页
Python中文乱码详解.doc_第3页
Python中文乱码详解.doc_第4页
Python中文乱码详解.doc_第5页
资源描述:

《Python中文乱码详解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Python中文乱码详解本文目的为Python程序员简练地介绍字符编码相关支持,彻底解疑“Python中文乱码”,“Python2与Python3字符编码差异”等相关问题。使用其他语言的程序员可作参考,道理都是相通的,不过具体处理方式不同罢了。痛苦的根源·起因计算机不能直接识别字符(文本的最小组成单位)。·字形:字的形状,又叫字图。文字的抽象形状,“小短横线”就是汉字“一”的字形。·字符:抽象符号和数字成对编码用于在计算机系统中表示的信息单位。虽然字符本身是抽象的,但它一旦存在于计算机系统中,它就对应了某种特定

2、字符编码方式。字符“一”在GBK编码中是0xD2BB。·字体:字的形体。草书、行书、楷书,都叫字体。计算机中的字体如:华文行楷,微软雅黑。·解决办法但是计算机可以识别二进制数,于是采用一个二进制数来指代一个字符。·结果很多人都想到了这个解决办法。比如拉丁字母,他们想到了用十进制65来表示字符’A’。不同国家或者不同组织,他们因为事先没有商量,都用了同一个整数来表示他们自己国家里的某个文字。在不相互沟通的时候相安无事,但相互沟通时,就出现了问题。编码与解码先记住,任何信息,存放在存储介质中时,都是二进制流(比特流

3、)。·编码过程:字符转换成二进制流表示的过程。·解码过程:二进制流转换成字符的过程。·编码规则:编码和解码过程中遵循的规则,例如GBK编码,UTF-8编码。字符编码的来龙去脉ASCII美国信息交换标准代码,最早的通用编码方案。开始时,只用7个比特位就表示完了所有拉丁文字母和一些符号,共128个。后来发现不够用,又启用了第8位,刚好一个字节的长度,共256个字符。但是,不同的公司/组织把这扩展出来的128个码位指派给了不同的字符,文档交流就困难了。于是ANSI这个组织站出来了,制定了ANSI标准。而且人们也发现,

4、ASCII这种单字节(因为它占8个比特位)编码满足不了更多的字符需求,那必须得用多个字节编码。多字节字符集(MBCS)概念就诞生了。ANSI美国国家标准协会认可的标准。注意,它是一种标准,而不是某种具体编码,可以看做是编码的一种分类。ANSI的标准就是,ASCII码占用的码位及其所指代的字符不许改变,剩下的自己扩展。中国人在这个规定上有自己的扩展(如GBK),英国人也有自己的扩展(如ISO-8859-1,即latin-1)。所以ISO-8859-1和GBK都可以称之为ANSI编码,因为它们符合ANSI规定。以W

5、indows系统为例,中文系统中所指的ANSI编码就是GBK,英文系统中的ANSI编码就是ISO-8859-1。MBCS多字节字符集(Multi-ByteCharacterSet),采用不定长度可以是一个字节,也可以是两个字节,也可以是三个字节来进行编码。大多数情况下2个字节就够用了,汉字就分配两个字节,称之为DBCS(Double-ByteChactacterSet)。在Linux系统中看得到MBCS说法,在Windows中呢?其实就是ANSI,ANSI只规定了第一个字节的位置是ASCII,超出这个范围的,肯

6、定也是多字节的了。CodePage代码页,把一种字符编码方式(和字符集有区别,稍后讲解)放在一个CodePage上,编码解码就像翻书查字典似的。很多个代码页,也就容纳了很多种编码方式。这个概念最早来自IBM,但也被微软等公司采用。同一种编码方式,在不同的公司制定的CodePage里“页码”也不相同。比如UTF-8,在微软的CodePage里是65001,在IBM里是1208。注意:MBCS、DBCS、CodePage、ANSI,它们各自指代的不是某种具体编码,而是符合某种规则的编码方式的统称。在不同的操作系统或

7、平台下,它们有一个默认值而已。PS:微软的CP936不等于GBK,它们有几十个不太常用的字符不同。所以绝大多数情况下感觉不到差异。Unicode/UCS通过以上的介绍知道,各种解决方案都是各自为政,解决不了 “同一个系统中同时显示全宇宙的所有字符” 这个问题。于是就有两个组织,他们开始着手做这件事情,UCS和Unicode诞生了。·通用字符集(UCS,UniversalCharacterSet)是由国际标准化组织(ISO)制定的ISO10646标准所定义的字符集。通常也译为通用多八位编码字符集。·统一码(Uni

8、code)是由统一码联盟指定的。后来发现,一山不容二虎,世界人民不需要两个目的相同但是具体实现却有差异的编码方案。UCS和Unicode握手言和,从Unicode2.0起,采用了和ISO10646-1的编码方案,它们在相同的码位上都对应同样的字符。尽管这两个组织目前还在相互独立的在发布字符编码标准。可能是Unicode名字好记,所以采用更为广泛。关于UCS-2,UCS-4这些概念不再赘

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。