python中文编码问题

unicode和string无法对比:

UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode – interpreting them as being unequal

s1=’你好’  #string

s2=u’你好’  #unicode

s1和s2不能直接对比,需要把s2转为gbk才行

s1==s2.encode(‘gbk’)

转码思路

字符串在Python内部的表示是unicode编码,在编码转换时通常需要以unicode作为中间编码。

先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

转码举例

s.decode(‘utf-8’, ‘ignore’).encode(‘gbk’, ‘ignore’)

先由utf-8转为unicode,再由unicode转为gbk,ignore表示忽略非法字符

s = u'中文' # s为unicode
print isinstance(s, unicode) # True
print s.encode('utf-8', 'ignore') # 中文
# 由unicode转为utf-8,ignore表示忽略非法字符

转载自:https://blog.csdn.net/Lv2018666/article/details/79769362

You may also like...