使用python3,我有一个显示为字节的字符串
strategyName = \ xe7 \ x99 \ xbe \ xe5 \ xba \ xa6
我需要通过解码将其更改为可读的中文字母
orig=b'strategyName=\xe7\x99\xbe\xe5\xba\xa6'
result=orig.decode('UTF-8')
print()
这样显示,这就是我想要的
strategyName =百度
但是如果我将其保存在另一个字符串中,它的工作原理就会不同
str0='strategyName=\xe7\x99\xbe\xe5\xba\xa6'
result_byte=str0.encode('UTF-8')
result_str=result_byte.decode('UTF-8')
print(result_str)
strategyName = ç¾åº¦é£é©çç¥
请帮助我了解为什么会发生这种情况,以及如何解决该问题。
非常感谢
答案 0 :(得分:2)
当您尝试存储字符串的UTF-8编码字节时,您的问题是使用str
文字。您应该只使用bytes
文字,但是如果需要使用str
形式,则正确的方法是使用encode
中的latin-1
(这是所有值的1-1转换器小于256的序数(与匹配的字节值匹配)以获取具有bytes
编码数据的utf-8
,然后解码为utf-8
:
str0 = 'strategyName=\xe7\x99\xbe\xe5\xba\xa6'
result_byte = str0.encode('latin-1') # Only changed line
result_str = result_byte.decode('UTF-8')
print(result_str)
当然,另一种方法可能是只键入您想要的Unicode转义,而不是对应于UTF-8编码的字节级转义:
result_str = 'strategyName=\u767e\u5ea6'
不需要严格要求。