gpt4 book ai didi

python-3.x - Python 3 - 将\xHH 十六进制值转换为 Unicode 的字符串

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

我正在尝试使用需要多个十六进制值的字符来转换字符串,如下所示:

'Mahou Shoujo Madoka\xe2\x98\x85Magica'

到它的 unicode 表示:
'Mahou Shoujo Madoka★Magica'

当我打印字符串时,它会尝试分别评估每个十六进制值,因此默认情况下我会得到:
x = 'Mahou Shoujo Madoka\xe2\x98\x85Magica'
print(x)

Mahou Shoujo MadokaâMagica

所以我尝试了一些其他的 StackOverflow 答案,例如 Best way to convert string to bytes in Python 3? :
x = 'Mahou Shoujo Madoka\xe2\x98\x85Magica'
z = x.encode('utf-8')
print('z:', z)
y = z.decode('utf-8')
print('y:', y)

z: b'Mahou Shoujo Madoka\xc3\xa2\xc2\x98\xc2\x85Magica'
y: Mahou Shoujo MadokaâMagica

Python: Convert Unicode-Hex-String to Unicode :
z = 'Mahou Shoujo Madoka\xe2\x98\x85Magica'
x = binascii.unhexlify(binascii.hexlify(z.encode('utf-8'))).decode('utf-8')
print('x:', x)

x: Mahou Shoujo MadokaâMagica

还有其他一些,但没有一个起作用。我发现的大多数结果都是拥有 double backslash problem 的人。 ,但他们都没有我的确切问题。

我注意到的是,当我执行 str.encode 时,它​​似乎在二进制文件中添加了一些额外的值(例如第一次尝试时 z 和 x 之间的差异),我不太确定为什么。

所以我尝试将字符串的字符手动输入到二进制文件中:
x = b'Mahou Shoujo Madoka\xe2\x98\x85Magica'
x.decode('utf-8')

'Mahou Shoujo Madoka★Magica'

它奏效了。但是我找不到从字面上将字符串转换为二进制的方法,而不是输入它。我哪里错了?

最佳答案

在 Python 3 中,您的原始字符串是 Unicode 字符串,但包含看起来像 UTF-8 但解码不正确的 Unicode 代码点。要解决这个问题:

>>> s = 'Mahou Shoujo Madoka\xe2\x98\x85Magica'
>>> type(s)
<class 'str'>
>>> s.encode('latin1')
b'Mahou Shoujo Madoka\xe2\x98\x85Magica'
>>> s.encode('latin1').decode('utf8')
'Mahou Shoujo Madoka★Magica'
latin1编码恰好将 1:1 映射到 Unicode 中的前 256 个代码点,因此 .encode('latin1')将代码点直接转换回字节。那么您可以 .decode('utf8')字节正确。

关于python-3.x - Python 3 - 将\xHH 十六进制值转换为 Unicode 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42778346/

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