Python 字符编码问题的处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 字符编码问题的处理相关的知识,希望对你有一定的参考价值。

python中的字符编码问题往往是初学者容易弄不明白的问题, 要想将这个问题搞清楚,需要先弄明白以下的概念

  • decode 和 encode 函数的作用
  • 字符串字面量的编码格式

decode(str)  -  将其它编码字符串转换成Unicode编码字符串, 返回转换成Unicode编码的字符串

encode(str)  -  将Unicode字符串转换成其它编码(str)字符串, 返回转换成其它编码后的字符串.

所以, decode 和 encode的作用就是将其他编码转换成Unicode , 将Unicode转换成其他编码.
值得注意的是 ,调用decode的对象的本身的编码和decode形参指明的编码不一致时函数会出错,比如,str1字符串对象它本身的编码是ASCII的,但传入的参数为‘gb2312‘,则函数会中断.
而当一个字符串对象它本身的编码不是Unicode却调用encode函数,那么函数也会出错.

# ‘大家好‘ 是一个字符串字面量, 在不同的编辑器中, 它的编码格式是不一样的
# 如果编辑器是以utf-8编码格式来保存文本的, 那么,所有的字符串字面量都是utf-8格式
# 如果编辑器是以gb2312编码格式来保存文本的,那么, 所有的字符串字面量都是ASCII格式
str1 = 大家好
 
# 因为编辑器是以gb2132编码保存文本的, 所以这里先将gb2312的字符串转换成Unicode类型的字符串# 因此, str1是gb2132编码的, str2是Unicode的
str2 = str1.decode(gb2312)
 
# str2是Unicode编码的,因此可以调用encode函数
str2.encode("utf-8")

 

 

总结

    • 在调用decode函数时,一定要弄清楚调用这个函数的字符串对象本身是什么编码,只有这样你才知道你要传入的形参是什么
    • 在调用encode函数时,一定要确保调用这个函数的字符串对象本身是Unicode编码的.


以上是关于Python 字符编码问题的处理的主要内容,如果未能解决你的问题,请参考以下文章

python 字符编码处理问题总结 彻底击碎乱码!

Python 字符编码问题的处理

字符编码和文件处理

python+spark程序代码片段

06 Python字符编码与文件处理

使用非utf-8编码在Python中解析XML