Python2中编码相关的问题很是让人蛋疼,特别是中文字符。
比如本文所述的中文网页GBK编码的诡异问题。
现象
例如:盲录職氓聭聵
,其实网页里面正常的应该是会员
分析
接着上面的例子,会员
这部分乱码通过repr()
函数求值得到如下结果
\xc3\xa4\xc2\xbc\xc2\x9a\xc3\xa5\xc2\x91\xc2\x98
使用type()
函数求值得到的结果为unicode
eval(repr())
出来值为
盲录職氓聭聵
通过查表上述6个汉字对应
c3a4 c2bc c29a c3a5 c291 c298
而上面内容对应的UTF-8值就是会员
解决方法
相当诡异的是本身是unicode编码,却被当作GBK系列来解码,结果导致乱码。因此将这些字符先编码再解决解决问题。
encode('raw_unicode_escape').decode()