Python需要对简单文件进行utf16编码

2024-04-26 06:36:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我解决了这个问题,但我想了解原因

我在一台运行Python3.9.6的Windows10电脑上。我有一个简单的文本文件,其中只有一行,就是:

Fifty_50

一段时间以来,我一直在运行一个小型python实用程序文件,打开类似这样的文件并解析内容,没有任何问题,但我一直在使用python 3.7。我的代码非常简单:

with open(companyfile) as companies:
    for company in companies:
    ...

当我昨天运行这个程序时,我开始从这个简单的单行文件中获取垃圾而不是文本。我认为这可能是因为我没有提供编码,并将代码更改为:

with open(companyfile, 'r', encoding='utf-8') as companies:

这给了我一个错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

最后,我尝试了utf-16,文件正常打开和处理

所以我的问题是,既然我使用的是Python3.9,我是否必须始终指定utf-16?我试图打开的简单文件中没有特殊字符;所以我不明白为什么会有问题

如有任何见解,将不胜感激

谢谢--

艾尔


1条回答
网友
1楼 · 发布于 2024-04-26 06:36:12

如名称中所示,utf-16中的每个字符长度为16位或2字节。试图将其作为utf-8编码的文件打开将不起作用,因为这两种编码在基本级别上不兼容。我认为我使用的大多数文件都是utf-8,但是很多Microsoft程序(如Powershell和Excel)默认情况下会在utf-16中生成文本文档

就“猜测”编码而言,there isn't really a "right" way to do it.在任何文件中都没有通用的字节序列来指定使用了什么编码,因为编码是相当任意的,可以随时设计新的编码

相关问题 更多 >