如何在python中将字符串转换为字节?

随便的家伙

在我的代码中,我使用utf-8编码了一个字符串。我得到输出,将其转换为字符串,然后将其发送到其他程序。另一个程序获取该字符串,但是,当我尝试对该字符串进行解码时,它给我一个错误,AttributeError:'str'对象没有属性'decode'。我需要将编码后的数据作为字符串发送,因为我的其他程序在json中接收到它。我的第一个程序在python 3中,另一个程序在python 2中。

# my first program
x = u"宇宙"
x = str(x.encode('utf-8'))


# my other program
text = x.decode('utf-8')
print(text)

我应该怎么做才能将第二个程序接收到的字符串转换为字节,以便解码工作?

布宜诺斯艾利斯

正确回答此问题的最重要部分是有关如何将这些对象传递给Python2程序的信息:您正在使用JSON。

所以,和我在一起:

.encode在程序1中执行步骤之后,您将获得一个byte对象。通过调用str(...)它,您只是在该字节对象上放了一个转义层,然后将其转回一个字符串-但是当此字符串按原样写入文件或通过网络传输时,它将再次被编码-任何非ASCII令牌通常使用\u每个字符前缀和代码点进行转义-但原始的中文字符本身现在已以utf-8编码并进行了双转义。

Python的JSON加载方法已经将json数据的内容解码为文本字符串:因此完全不需要解码方法。

简而言之:要传递数据,只需在第一个程序中将您的原始文本编码为JSON,并且json.load在目标Python 2程序上之后不要进行任何解码

# my first program
x = "宇宙"
# No str-encode-decode dance needed here.
...
data =  json.dumps({"example_key": x, ...})
# code to transmit json string by network or file as it is...


# my other program
text = json.loads(data)["example_key"]
# text is a Unicode text string ready to be used!

在执行操作时,您可能正在获取双重编码的文本-我将在Python 3控制台上对其进行模仿。我将打印每个步骤的结果,以便您不了解正在发生的转换。

In [1]: import json

In [2]: x = "宇宙"

In [3]: print(x.encode("utf-8"))
b'\xe5\xae\x87\xe5\xae\x99'

In [4]: text = str(x.encode("utf-8"))

In [5]: print(text)
b'\xe5\xae\x87\xe5\xae\x99'

In [6]: json_data = json.dumps(text)

In [7]: print(json_data)
"b'\\xe5\\xae\\x87\\xe5\\xae\\x99'"
# as you can see, it is doubly escaped, and it is mostly useless in this form

In [8]: recovered_from_json = json.loads(json_data)

In [9]: print(recovered_from_json)
b'\xe5\xae\x87\xe5\xae\x99'

In [10]: print(repr(recovered_from_json))
"b'\\xe5\\xae\\x87\\xe5\\xae\\x99'"

In [11]: # and if you have data like this in files/databases you need to recover:

In [12]: import ast

In [13]: recovered_text = ast.literal_eval(recovered_from_json).decode("utf-8")

In [14]: print(recovered_text)
宇宙

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python 2.7中将字符串转换为字节字符串

如何在 Tensorflow 中将字节转换为字符串

如何在python 3中将字节转换为字符串?

如何在Python 2中将字符串转换为字节

我如何在Python中将字符串转换为字节,例如node js

如何在Python2中将字符串转换为字节?

如何在Python中将具有非ASCII字节的字节数组转换为字符串?

如何在python中将urlopen转换为字符串

如何在Python中将字符串转换为整数?

如何在Python中将DWORD转换为字符串

如何在Python中将字符串转换为函数?

如何在Python中将字符串转换为代码?

如何在Python中将字符串转换为timetuple

如何在Python中将字符串转换为函数?

如何在python中将字符串转换为复数?

如何在Python中将字符串转换为命令?

如何在python中将字符串转换为int?

如何在 python 中将字符串转换为表格?

在python中将字节对象转换为字符串对象

问题在Python中将字节转换为字符串

如何在Python 3中将二进制字符串转换为类似字节的对象?

如何在 Python 3 中将字节转换为字符串以进行连接(serialized_data,signature)

如何在Java中将字节数组转换为十六进制字符串?

如何在Java中将字符串转换为bcd格式的字节数组?

如何在Java中将十六进制字符串转换为字节值

如何在PowerShell中将哈希字符串转换为字节数组?

如何在Go中将字节数组转换为字符串数组?

如何在Java中将数组字节转换为字符串

如何在C#中将字节数组的子范围转换为字符串