如何将字符串转换为字节?

时间:2019-01-11 02:33:47

标签: python-3.x

使用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 = ç¾åº¦é£é©ç­ç¥

请帮助我了解为什么会发生这种情况,以及如何解决该问题。
非常感谢

1 个答案:

答案 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'

不需要严格要求。