首页 > 解决方案 > Python'ascii'编解码器无法编码字符错误

问题描述

我试图读取 utf-16 文件。这段代码在本地机器上运行良好,但是当我在 AWS Batch 服务上运行它时,它给出了上述错误。

import codecs
file_to_split = codecs.open("file_utf_16.txt", 'r+', "UTF-16")

它抛出一个异常header 'ascii' codec can't encode character '\ufeff' in position 0: ordinal not in range(128)

我正在使用 Python 3.6。

标签: pythonpython-3.xcodec

解决方案


前几个字节是 BOM(字节顺序标记)。这是 Unicode 文档开头的字节序列,告诉您字节顺序、编码等。

这篇维基百科文章将帮助解释技术细节:

字节顺序标记

你有几个选择。此答案显示了为不同编码处理 BOM 的各种方法:Stack Overflow 答案

这个答案向您展示了如何正确地将文件读入内存,这是我认为您想要做的。堆栈溢出答案。这样,您就可以将文件作为普通的 Python 字符串处理。


推荐阅读