(内容属于摘录)
一、文件头部声明编码
1、格式
符合正则表达式 "coding[; =]\s([- \w+])"的字符串都满足
2、作用
对Python文件编码类型的声明,若没有此编码,则Python默认以ascii编码去处理(如果没有声明编码,而文件中又有非ascii类型的字符,则Python解释器会报错)
二、defaultencoding
1、设置代码
import sys
reload(sys)
sys.setdefaultencoding() 设置/ sys.getdefaultencoding() 获取
2、说明
如果不设置defaultencoding,那么Python在编码解码的时候就会使用默认的defaultencoding(Python2.x中默认为ascii,Python3.x中默认为unicode)
str.encode("utf-8") 等价于 str.decode(defaultencoding).encode("utf-8")
如果str的编码是ascii,则不会报错,但是含有非ascii字符的str,Python的解释器会报错
u=unicode("人生苦短") 等价于 u=unicode("人生苦短",defaultencoding)
三、decode与encode
如果代码里面混合使用了 str 类型和 unicode 类型的字符串,Python 会默认使用 ascii 编码尝试对 unicode 类型的字符串编码 (encode),或对 str 类型的字符串解码 (decode),这时就很可能出现上述错误。
1、在进行同时包含 str 类型和 unicode 类型的字符串操作时,Python2 一律都把 str 解码(decode)成 unicode 再运算,这时就很容易出现 UnicodeDecodeError。
2、如果函数或类等对象接收的是 str 类型的字符串,但你传的是 unicode,Python2 会默认使用 ascii 将其编码成 str 类型再运算,这时就很容易出现 UnicodeEncodeError。
四、获取某一变量的编码类型:
import chardet
chardet.detect(Variable_name)