首页 > 解决方案 > 如何将字符串转换为字节?

问题描述

使用python3,我有一个显示为字节的字符串

策略名称=\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=ç¾åº¦é£é©çç¥

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

标签: python-3.x

解决方案


str当您尝试存储字符串的 UTF-8 编码字节时,您的问题是使用文字。您应该只使用bytes文字,但如果需要这种str形式,正确的方法是encodein 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'

无需繁琐。


推荐阅读