1

对于我的项目,一切都必须是 unicode。这是我处理所有事情的方式,所有字符串都传递给这个函数:

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

以下方法是生产代码的良好做法吗?如果不是,为什么以及如何建议解码为 un​​icode?errors='ignore' 实际上不适用于 ValueErrors 'invalid \x escape',但我不确定如何正确处理。

谢谢

4

2 回答 2

1

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

\x后面应该跟两个十六进制值(数字,A, B, C, D, E, F, a, b, c, d, e, f)。

有效示例:

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

无效示例:

>>> '\xOO'
ValueError: invalid \x escape
>>> '\xl3'
ValueError: invalid \x escape
>>> '\x5'
ValueError: invalid \x escape

请参阅字符串文字

于 2013-09-13T07:54:44.037 回答
0

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

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

于 2014-02-20T23:39:12.970 回答