gpt4 book ai didi

访问 OrderedDict 记录时出现 python Unicode 解码错误

转载 作者:太空宇宙 更新时间:2023-11-03 16:13:01 24 4
gpt4 key购买 nike

在 Windows (32) 上使用 python 3.5.2,我正在读取一个 DBF 文件,该文件返回一个 OrderedDict。

from dbfread import DBF
Table = DBF('FME.DBF')
for record in Table:
print(record)

当访问第一条记录时,一切正常,直到我到达包含变音符号的记录:

Traceback (most recent call last):
File "getdbe.py", line 3, in <module>
for record in Table:
File "...\AppData\Local\Programs\Python\Python35-32\lib\site-packages\dbfread\dbf.py", line 311, in _iter_records
for field in self.fields]
File "...\AppData\Local\Programs\Python\Python35-32\lib\site-packages\dbfread\dbf.py", line 311, in <listcomp>
for field in self.fields]
File "...\AppData\Local\Programs\Python\Python35-32\lib\site-packages\dbfread\field_parser.py", line 75, in parse
return func(field, data)
File "...\AppData\Local\Programs\Python\Python35-32\lib\site-packages\dbfread\field_parser.py", line 83, in parseC
return decode_text(data.rstrip(b'\0 '), self.encoding)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 11: ordinal not in range(128)

即使我不打印记录,我仍然遇到问题。

有什么想法吗?

最佳答案

dbfread 无法从 DBF 文件中检测到正确的编码。来自 Character Encodings section of the documentation :

dbfread will try to detect the character encoding (code page) used in the file by looking at the language_driver byte. If this fails it reverts to ASCII. You can override this by passing encoding='my-encoding'.

强调我的。

您必须传入显式编码;这始终是 Windows 代码页。看看supported codecs in Python ;您必须在此处使用以 cp 开头的。如果您不知道适合您的代码页,您将需要进行一些试错工作。请注意,某些代码页在字符上重叠,因此即使代码页似乎产生了清晰的结果,您也可能需要继续搜索并尝试数据文件中的不同记录以查看最适合的记录。

关于访问 OrderedDict 记录时出现 python Unicode 解码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39102647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com