【问题标题】:Convert bytes to ascii and back save in Python?将字节转换为ASCII并在Python中保存?
【发布时间】:2018-02-15 12:50:04
【问题描述】:

我正在使用 python 3.5

我有几个字节字符串表示以各种编解码器编码的文本,因此:b'mybytesstring',现在有些是 Utf8 编码的,其他的是 latin1 等等。我想按以下顺序是:

  • 将字节字符串转换为类似ascii的字符串。
  • 将 ascii like 字符串转换回字节字符串。
  • 使用正确的编解码器解码字节字符串。

问题是我必须将字节字符串移动到不接受字节对象的东西中,所以我正在寻找一种解决方案,让我可以安全地执行bytes -> ascii -> bytes

【问题讨论】:

  • 您的意思是您有不同的bytes 对象,每个对象的编码不同?我不明白你想做什么bytes --ascii--> str --???--> bytes
  • 是的,我有一组 bytes 对象都有不同的编码。我需要将它们全部放入一个不接受 bytes 对象的容器中,只接受 string 对象。然后我将它们从容器中取出,我可以使用正确的编码正确解码它们。

标签: python python-3.x string


【解决方案1】:
x = x.decode().encode('ascii',errors='ignore')

【讨论】:

    【解决方案2】:

    为此,您使用encodedecode 方法,并为它们提供所需的编码。我不清楚您是否事先知道编码。如果你不知道,你就有麻烦了。您可能不得不以某种方式猜测编码,冒着垃圾输出的风险。

    【讨论】:

    • 如果不知道编码,可以尝试使用chardet进行猜测。
    【解决方案3】:

    好的,我找到了一个比我想象的要容易得多的解决方案

    mybytes = 'ëýđþé'.encode()
    str_mybytes = str(mybytes)
    again_mybytes = eval(str_mybytes)
    decoded = again_mybytes.decode('utf8')
    

    【讨论】:

    猜你喜欢
    • 2017-12-25
    • 1970-01-01
    • 2015-01-30
    • 2018-08-28
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2016-03-07
    相关资源
    最近更新 更多