python的编码问题

第一:默认采用ascii编码。sys.getdefaultencoding可以取得默认编码参数。sys.setdefaultencoding可以改变这个设置。
>>> sys.getdefaultencoding()
'ascii'

>>> sys.setdefaultencoding('cp936')
>>> sys.getdefaultencoding()
'cp936'

需要注意的是setdefaultencoding()时会因为sys在加载时自动删除此方法需要reload(sys)一次。

第二:可以在文件开始位置以 #*-*coding:cp936*-*来改变编码方式。

第三:使用unicode字符。用str.decode()来进行unicode编码。用encode()来进行ascii编码。

 

python可恶的编码问题

 

GB2312 是对 ASCII 的中文扩展。

GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号

Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。UTF-8是Unicode的实现方式之一。

 

  • 中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字。
  • 汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。
  • 中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充为 GB18030 编码。
  • 每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。
  • 终于,有个叫 ISO 的组织看不下去了。他们一起创造了一种编码 UNICODE ,这种编码非常大,大到可以容纳世界上任何一个文字和标志。所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。
  • UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8个位和 16个位。

您可以选择一种方式赞助本站