对于我的项目,一切都必须是unicode。这是我处理所有内容的方式,所有字符串都传递到此函数中:
def unicodify(string):
if not isinstance(string, unicode):
return string.decode('utf8', errors='ignore')
return string
以下方法是生产代码的良好做法吗?如果没有,为什么以及如何建议解码到unicode? errors ='ignore'实际上对ValueErrors的invalid \ x escape'不起作用,但我不确定如何正确处理它。
由于
答案 0 :(得分:1)
您的字符串文字可能无效。
\x
后面应跟两个十六进制值(数字,A
,B
,C
,D
,E
,{{ 1}},F
,a
,b
,c
,d
,e
)。
有效示例:
f
无效示例:
>>> '\xA9'
'\xa9'
>>> '\x00'
'\x00'
>>> '\xfF'
'\xff'
请参阅String literals。
答案 1 :(得分:0)
为了您甚至尝试将str类型转换为unicode类型,您需要知道str中数据的编码。 utf8很常见,但不是唯一的编码。
此外,您可以获得不在任何编码中的str数据(如任意二进制数据)。在这种情况下,您无法将其转换为unicode。或者更确切地说,您有两个选择:a)引发异常或b)尽可能多地转换并忽略错误。这取决于应用程序应该做什么。