gpt4 book ai didi

python-2.7 - Python 2.7,将 utf8 字符串转换为 ascii

转载 作者:行者123 更新时间:2023-12-03 18:18:57 25 4
gpt4 key购买 nike

我正在使用 python 2.7.12我有一个包含 unicode 文字的字符串,它不是 Unicode 类型。我想将其转换为文本。这个例子解释了我正在尝试做什么。

>>> s
'\x00u\x00s\x00e\x00r\x00n\x00a\x00m\x00e\x00'
>>> print s
username
>>> type(s)
<type 'str'>
>>> s == "username"
False

我将如何转换这个字符串?

最佳答案

这不是 UTF-8,它是 UTF-16,虽然不清楚它是大端还是小端(没有 BOM,并且有前导和尾随 NUL 字节,使其长度不均匀)。对于 ASCII 范围内的文本,UTF-8 与 ASCII 无法区分,而 UTF-16 将 NUL 字节与 ASCII 编码字节交替(如您的示例所示)。

无论如何,转换为纯 ASCII 相当容易,您只需要以一种或另一种方式处理不均匀的长度:

s = 'u\x00s\x00e\x00r\x00n\x00a\x00m\x00e\x00' # I removed \x00 from beginning manually
sascii = s.decode('utf-16-le').encode('ascii')

# Or without manually removing leading \x00
sascii = s.decode('utf-16-be', errors='ignore').encode('ascii')

当然,如果您的输入只是 NUL 散布的 ASCII,并且您不知道字节序或如何获得偶数字节,您可以作弊:

sascii = s.replace('\x00', '')

但是在输入是一些完全不同的编码的情况下,这不会引发异常,因此它可能会隐藏指定您预期会捕获的错误。

关于python-2.7 - Python 2.7,将 utf8 字符串转换为 ascii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40624129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com