2024-09-25 04:21:34 发布
网友
有没有办法将像"\\xe8\\xaa\\x9e\\xe8\\xa8\\x80"这样的\x转义字符串转换为可读形式:"語言"
"\\xe8\\xaa\\x9e\\xe8\\xa8\\x80"
\x
"語言"
>>> a = "\\xe8\\xaa\\x9e\\xe8\\xa8\\x80" >>> print(a) \xe8\xaa\x9e\xe8\xa8\x80
我知道有一个类似的问题here,但似乎解决方案只适用于拉丁字符。如何将这种形式的字符串转换为可读的CJK字符
首先使用'unicode-escape'解码,然后使用'utf8':
a = "\\xe8\\xaa\\x9e\\xe8\\xa8\\x80" decoded = a.encode('latin1').decode('unicode_escape').encode('latin1').decode('utf8') print(decoded) # 語言
请注意,由于我们只能解码字节对象,因此需要使用“拉丁1”对其进行透明编码
从字符串a开始,它似乎遵循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代码页),则必须使用其解码器进行解码
首先使用'unicode-escape'解码,然后使用'utf8':
请注意,由于我们只能解码字节对象,因此需要使用“拉丁1”对其进行透明编码
从字符串
a
开始,它似乎遵循python的十六进制转义规则,您可以将其解码为字节对象加上解码字符串的长度这里不需要长度,只需获取项目0即可。现在是猜测的时候了。假设这个字符串实际上表示utf-8编码,那么现在就有了一个可以解码的字节数组
如果底层编码不同(例如,Windows CJK代码页),则必须使用其解码器进行解码
相关问题 更多 >
编程相关推荐