UnicodeDecoder 错误 Charmap 解码器无法解码塞尔维亚拉丁字母,如 č、ć、ž、š、đ?

问题描述 投票:0回答:1

我有一个由 python 脚本读取的 csv 文件,只要文件中存在塞尔维亚拉丁字母,它就会抛出错误。解码器将这些字母解码为空。 有没有一种方法可以以某种方式给出需要解码的指令或以某种方式更改它,而无需遍历文件中的所有字符串。

这是错误:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 1567: character maps to <undefined>

我认为可以做到的唯一方法是将所有字符替换为等效的英语拉丁字母,但这非常耗时。

utf-8 decoding
1个回答
0
投票

您的错误消息表明您正在使用 chammap 编解码器。 Python 文档对此有这样的说法:

还有另一组编码(所谓的 chammap 编码) 选择所有 Unicode 代码点的不同子集以及如何选择 这些代码点映射到字节 0x0–0xff。 [...]

所有这些编码只能编码 1114112 个码点中的 256 个 以 Unicode 定义。

(已添加强调。)

那么,您发现编解码器无法处理某些字符也就不足为奇了。

不清楚您的文件是如何编码的。从错误消息来看,很可能是 UTF-8,但还有其他几种可能性。还不清楚您的脚本最终如何选择 Charmap 编解码器来解码文件,或者它选择哪一个。无论代码的哪一部分选择编解码器,都需要选择适合文件实际编码的编解码器。

或者,该脚本可能特定于不支持您所询问的字符的文件格式。如果是这种情况,那么错误不在脚本中,而在数据中。

© www.soinside.com 2019 - 2024. All rights reserved.