我正在尝试转换一个包含多个十六进制值的字符的字符串,例如:
当我打印字符串时,它会尝试单独计算每个十六进制值,因此默认情况下我会得到这样的结果:
'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答案,比如在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: 将Unicode十六进制字符串转换为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
还有其他一些方法,但都没有起作用。我找到的大多数结果是人们遇到了双反斜杠问题,但没有一个人遇到了我的确切问题。
我注意到当我使用str.encode时,它似乎会在二进制中添加一些额外的值(例如第一次尝试中z和x之间的差异),我不太确定为什么。
所以我尝试手动将字符串的字符输入二进制:
x = b'Mahou Shoujo Madoka\xe2\x98\x85Magica'
x.decode('utf-8')
'Mahou Shoujo Madoka★Magica'
它可以工作。但我找不到直接将字符串转换为二进制的方法,除了手动输入外。我错在哪里?
s = b"\xe2\x98\x85".decode("utf8")
。 - Jenss='★'
,但这不是问题的重点。 - Mark Tolonen