将“\x”转义字符串转换为 python 中的可读字符串
Convert "\x" escaped string into readable string in python
有没有办法将像 "\xe8\xaa\x9e\xe8\xa8\x80"
这样的 \x
转义字符串转换为可读形式:"語言"
?
>>> a = "\xe8\xaa\x9e\xe8\xa8\x80"
>>> print(a)
\xe8\xaa\x9e\xe8\xa8\x80
我知道有一个类似的问题here,但解决方案似乎只适用于拉丁字符。如何将这种形式的字符串转换成可读的中日韩字符?
先使用'unicode-escape'解码,然后'utf8':
a = "\xe8\xaa\x9e\xe8\xa8\x80"
decoded = a.encode('latin1').decode('unicode_escape').encode('latin1').decode('utf8')
print(decoded)
# 語言
请注意,由于我们只能解码字节对象,因此我们需要在其间使用 'latin1'.
对其进行透明编码
从似乎遵循 python 的十六进制转义规则的字符串 a
开始,您可以将其解码为字节对象加上已解码字符串的长度。
>>> a = "\xe8\xaa\x9e\xe8\xa8\x80"
>>> import codecs
>>> codecs.escape_decode(a)
(b'\xe8\xaa\x9e\xe8\xa8\x80', 24)
此处不需要长度,所以只需获取第 0 项即可。现在是猜测的时候了。假设这个字符串实际上表示一个 utf-8 编码,你现在有一个可以解码的字节数组
>>> codecs.escape_decode(a)[0].decode('utf-8')
'語言'
如果基础编码不同(例如 Windows CJK 代码页),您必须使用其解码器进行解码。
有没有办法将像 "\xe8\xaa\x9e\xe8\xa8\x80"
这样的 \x
转义字符串转换为可读形式:"語言"
?
>>> a = "\xe8\xaa\x9e\xe8\xa8\x80"
>>> print(a)
\xe8\xaa\x9e\xe8\xa8\x80
我知道有一个类似的问题here,但解决方案似乎只适用于拉丁字符。如何将这种形式的字符串转换成可读的中日韩字符?
先使用'unicode-escape'解码,然后'utf8':
a = "\xe8\xaa\x9e\xe8\xa8\x80"
decoded = a.encode('latin1').decode('unicode_escape').encode('latin1').decode('utf8')
print(decoded)
# 語言
请注意,由于我们只能解码字节对象,因此我们需要在其间使用 'latin1'.
对其进行透明编码从似乎遵循 python 的十六进制转义规则的字符串 a
开始,您可以将其解码为字节对象加上已解码字符串的长度。
>>> a = "\xe8\xaa\x9e\xe8\xa8\x80"
>>> import codecs
>>> codecs.escape_decode(a)
(b'\xe8\xaa\x9e\xe8\xa8\x80', 24)
此处不需要长度,所以只需获取第 0 项即可。现在是猜测的时候了。假设这个字符串实际上表示一个 utf-8 编码,你现在有一个可以解码的字节数组
>>> codecs.escape_decode(a)[0].decode('utf-8')
'語言'
如果基础编码不同(例如 Windows CJK 代码页),您必须使用其解码器进行解码。