【问题标题】:encode 'UCS-2 Little Endian' file to 'utf8' using python error使用python错误将'UCS-2 Little Endian'文件编码为'utf8'
【发布时间】:2017-07-29 20:36:00
【问题描述】:

我正在尝试使用 python 将 UCS-2 Little Endian 文件编码为 utf8,但我遇到了一个奇怪的错误。

我正在使用的代码:

file=open("C:/AAS01.txt", 'r', encoding='utf8')
lines = file.readlines()
file.close()

我收到以下错误:

Traceback (most recent call last):
  File "C:/Users/PycharmProjects/test.py", line 18, in <module>
    main()
  File "C:/Users/PycharmProjects/test.py", line 7, in main
    lines = file.readlines()
  File "C:\Python34\lib\codecs.py", line 319, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

我尝试使用编解码器命令,但也没有用... 知道我能做什么吗?

【问题讨论】:

    标签: python file utf-8 decode


    【解决方案1】:

    openencoding 参数设置 输入 编码。使用encoding='utf_16_le'

    【讨论】:

      【解决方案2】:

      如果您尝试阅读 UCS-2,为什么告诉 Python 它是 UTF-8? 0xff 很可能是 little endian 字节顺序标记的第一个字节:

      >>> codecs.BOM_UTF16_LE
      b'\xff\xfe'
      

      UCS-2 也已被弃用,原因很简单,Unicode 已经过时了。典型的替代品是 UTF-16。

      更多信息链接在Python 3: reading UCS-2 (BE) file

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        • 2013-08-16
        • 1970-01-01
        • 1970-01-01
        • 2021-11-30
        • 2016-07-09
        相关资源
        最近更新 更多