Python print编码转变默认编码 - Go语言中文社区

Python print编码转变默认编码


Python print编码有很多的应用范围,在这里我们先来看看如何进行默认编码转变成为系统编码。希望大家有所收获。什么情况用encode,什么情况又是decode呢,刚开始总是被搞昏。

其实各种本地字符集的英文名是Coded Character Set,要转换为Coded,肯定是要encode了,同样,从里面解出来也应该叫decode……

decode就是把其他编码转换为unicode,等同于unicode函数;encode就是把unicode编码的字符串转换为特定编码。在pyshell里继续:

a是Str类型的,所以再用encode会报错。用print输出时会调用默认编码转换为系统编码?

Python print编码

  1. >>> a.decode("gb2312")   
  2. u'u6211'   
  3. >>> print a.decode("gb2312")   
  4. >>> a.encode("gb2312")   
  5. Traceback (most recent call last):   
  6. File "<input>", line 1, in ?   
  7. UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in 
    position 0: ordinal not in range(128)   

b是unicode类型,打印时需要先encode(编码)成系统编码

Python 代码

  1. >>> print b.encode("gb2312")   
  2. >>> b.encode("gb2312")   
  3. 'xcexd2'   
  4. >>> b.decode("gb2312")   
  5. Traceback (most recent call last):   
  6. File "<input>", line 1, in ?   
  7. UnicodeEncodeError: 'ascii' codec can't encode character 
    u'u6211' in position 0: ordinal not in range(128)  

Python print编码里默认的encode和decode是strict模式,所以会直接抛出Error,而Java里是默认replace模式,所以在处理servlet时经常会看到一串?????在decode时传入第二个参数errors为'replace'可以和Java相同,但总是没成功,还不知道为什么。

版权声明:本文来源51CTO,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:http://developer.51cto.com/art/201003/188233.htm
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-16 19:42:17
  • 阅读 ( 1015 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢