如何确定xls中的编码?
Windows 程序以 xls 格式生成报告,以 cp1251 编码生成西里尔文条目,有时在 LibreOffice 中编辑报告,LibreOffice 可以正常打开并以 utf-8 格式保存条目,使用 cp1251 编码的 Pandas 显示不可读的文本并因错误而崩溃。如何确定xls中的字符编码,如果我不知道报告是否被编辑过,如果不需要utf-8编码,如果cp1251编码需要重新编码为utf-8(我可以重新编码)。
编辑前的文件https://disk.yandex.ru/d/m6p2XH-LgobpJg 在 libreOffice 中编辑后的文件https://disk.yandex.ru/i/jZud5jiqLQQdRw
如果您打开 otchet.xls
excel_data = pd.read_excel('otchet.xls')
出现该消息
*** No CODEPAGE record, no encoding_override: will use 'iso-8859-1'
и в другой функции
ValueError: cannot convert float NaN to integer
如果你像这样打开它,一切也都可以正常打开,但是你如何确定以什么编码打开它呢?
import xlrd
workbook = xlrd.open_workbook(source_file, encoding_override='cp1251')
您可以尝试简单地区分原始文件和重新保存的文件。因此,在原始字节中,第一个字节是
0x09
,而在重新保存的字节中,第一个字节是0xD0
。如果标记稳定(您需要在其他文件上检查它),那么这将起作用。您可以简单地循环可能的编码,直到不抛出异常: