在python中处理unicode转换

时间:2013-09-13 07:25:40

标签: python unicode

对于我的项目,一切都必须是unicode。这是我处理所有内容的方式,所有字符串都传递到此函数中:

def unicodify(string):
    if not isinstance(string, unicode):
        return string.decode('utf8', errors='ignore')
    return string

以下方法是生产代码的良好做法吗?如果没有,为什么以及如何建议解码到unicode? errors ='ignore'实际上对ValueErrors的invalid \ x escape'不起作用,但我不确定如何正确处理它。

由于

2 个答案:

答案 0 :(得分:1)

您的字符串文字可能无效。

\x后面应跟两个十六进制值(数字,ABCDE,{{ 1}},Fabcde)。

有效示例:

f

无效示例:

>>> '\xA9'
'\xa9'
>>> '\x00'
'\x00'
>>> '\xfF'
'\xff'

请参阅String literals

答案 1 :(得分:0)

为了您甚至尝试将str类型转换为unicode类型,您需要知道str中数据的编码。 utf8很常见,但不是唯一的编码。

此外,您可以获得不在任何编码中的str数据(如任意二进制数据)。在这种情况下,您无法将其转换为unicode。或者更确切地说,您有两个选择:a)引发异常或b)尽可能多地转换并忽略错误。这取决于应用程序应该做什么。