python中文编码问题

xiaoxiao2021-02-28  37

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://www.6miu.com/read-1981574.html

最新回复(0)