【问题标题】:Python decodes byte string correctly on windows but not working on linux.Giving Unicode error [duplicate]Python在Windows上正确解码字节字符串但在linux上不起作用。给出Unicode错误[重复]
【发布时间】:2020-04-03 12:54:42
【问题描述】:

我正在尝试解码具有 unicode 字符 EN DASH 的字节字符串,以获取正确的 unicode 字符串。

以下代码在带有 python 3.6 的 Windows 上运行良好:

decode_header_sequence = [(b'Excel to csv \xe2\x80\x93 Conversion .csv', 'utf-8')]
print(decode_header_sequence[0][0].decode('utf-8'))

这给了我字符串 - 'Excel to csv - Conversion .csv'

但是当我在 linux 平台上执行相同的行时。代码因 unicode 错误而失败: “ascii”编解码器无法对位置 16-18 中的字符进行编码:序数不在范围内(128)

我已经尝试了几乎所有我在这样的线程下找到的东西。但没有运气。 任何人都可以帮助我解决这个问题,因为我真的不知道为什么会这样?

【问题讨论】:

标签: python utf-8 python-unicode


【解决方案1】:

在 windows 上我发现 sys.getfilesystemencoding() 设置为 UTF-8,在 linux 上它设置为 ascii。因此在 windows 上它很容易解码输入字符串中的 utf-8 字符。但在 linux.I 上给出错误只需通过忽略输入字符串中的 utf-8 字符来摆脱它。 我将字符串解码如下:

ascii_String = input_string.decode('ascii', errors="ignore").encode('ascii')

【讨论】:

    猜你喜欢
    • 2013-05-21
    • 2021-07-05
    • 1970-01-01
    • 2011-07-14
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多