python-3.x - 如何将字符串转换为字节?
问题描述
使用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=ç¾åº¦é£é©çç¥
请帮助我了解为什么会发生这种情况,以及如何解决。
非常感谢
解决方案
str
当您尝试存储字符串的 UTF-8 编码字节时,您的问题是使用文字。您应该只使用bytes
文字,但如果需要这种str
形式,正确的方法是encode
in 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'
无需繁琐。
推荐阅读
- javascript - React-apollo:更改变量而不在轮询查询中重新获取
- c# - 如何将BMP图像文件加载到Image控件的ImageSource中,内存占用少,性能好
- angular - 谷歌甘特图轴自定义 [标签和日期/时间]
- json - 使用接口解组json数据时出错?
- python - 使用数据读取器时出现 ImmediateDeprecationError
- scala - 如何在 Scala WorkSheet 和 Akka 中引用配置文件?
- c# - 从 IEnumerable 中的倒数第二个项目跳过
- ios - 设置 UILabel 的文本没有内存泄漏?
- python - 在 Tensorflow 中进行图像处理的黑色输出(使用 jpeg 解码器进行神经网络训练)
- angular - MemoizedSelector 不可分配给“字符串”类型的参数