Python在windows上正确解码字节字符串,但在linux上不起作用.给出Unicode错误



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

以下代码在使用python 3.6的windows上运行良好:

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

它给了我字符串-"Excel到csv–转换.csv">

但当我在linux平台上执行相同的行时。代码失败,出现unicode错误:"ascii"编解码器无法对位置16-18中的字符进行编码:序号不在范围(128(中

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

在windows上,我发现sys.getfilesystemencoding((设置为UTF-8,在linux上设置为ascii。因此,在windows上,它可以很容易地解码输入字符串中的utf-8字符。但在linux上出现错误。我只是通过忽略输入字符串中的utf-8字符来消除这个问题。我解码字符串如下:

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

相关内容

最新更新