将字节转换为ascii并在Python中反向保存?
我正在使用python 3.5 我有两个字节字符串,表示在各种编解码器中编码的文本:将字节转换为ascii并在Python中反向保存?,python,python-3.x,string,Python,Python 3.x,String,我正在使用python 3.5 我有两个字节字符串,表示在各种编解码器中编码的文本:b'mybytesstring',现在一些是Utf8编码的,另一些是latin1等等。我想按以下顺序说明的是: 将字节字符串转换为类似ascii的字符串 将类似ascii的字符串转换回字节字符串 使用正确的编解码器解码字节字符串 问题是,我必须将字节字符串移动到不接受字节对象的位置,因此我正在寻找一种解决方案,使我能够安全地执行bytes->ascii->bytes。为此使用encode和decode方法,并
b'mybytesstring'
,现在一些是Utf8
编码的,另一些是latin1
等等。我想按以下顺序说明的是:
- 将字节字符串转换为类似ascii的字符串
- 将类似ascii的字符串转换回字节字符串
- 使用正确的编解码器解码字节字符串
问题是,我必须将字节字符串移动到不接受字节对象的位置,因此我正在寻找一种解决方案,使我能够安全地执行
bytes->ascii->bytes
。为此使用encode
和decode
方法,并为它们提供所需的编码。我不清楚你是否事先知道编码。如果你不知道,你就有麻烦了。您可能不得不以某种方式猜测编码,冒着垃圾输出的风险。好的,我找到了一个比我想象的简单得多的解决方案
x = x.decode().encode('ascii',errors='ignore')
mybytes = 'ëýđþé'.encode()
str_mybytes = str(mybytes)
again_mybytes = eval(str_mybytes)
decoded = again_mybytes.decode('utf8')
你的意思是说你有不同的
字节
对象,每个对象的编码都不同吗?我不明白您想做什么字节--ascii-->str--?-->字节
?是的,我有一组字节
对象,所有对象都有不同的编码。我需要将它们全部放入一个容器中,该容器不只接受字节
对象字符串
对象。然后我把它们从容器中拿出来,我可以用正确的编码对它们进行正确的解码。如果你不知道编码,你可以尝试使用猜测。虽然使用eval
确实有效,但对于我想做的事情来说,它有点不安全。我找到了一个避免评估的答案: