Warm tip: This article is reproduced from serverfault.com, please click

python-Windows XP编码,用于非英语和英语字符

(python - Windows XP encoding for non-english and english characters)

发布于 2020-06-07 10:34:07

问题:

我正在使用python和cp1253编码编写带有希腊字符的txt文件,但是该程序在某些字符处引发错误。

UnicodeEncodeError: 'charmap' codec can't encode character '\u2265' in position 389: character maps to <undefined>

问题:

我相信如果我使用包含两种语言并且与Windows XP兼容的编码,则可以解决此问题。所以我的问题是:

Windows XP如何处理双语文本?是否使用“混合”编码?


编辑 我几个月后回来,我意识到我的问题多么幼稚。无论如何,我几乎保持不变,我将为遇到相同问题的新开发人员回答此问题

Questioner
Charalamm
Viewed
11
Charalamm 2020-12-02 05:23:36

显然,问题在于我尝试编写的文本包含编码中未包含的字符。

为了解决该问题,我尝试将所有“不良”字符替换为普通字符。为了找到所有这些字符,我使用了以下脚本

bad_chars = []
with open(name, 'w', encoding = 'cp1253') as res:
    for i in range(len(whole_text)):
        try:
            res.write(whole_text[i])
        except:
            bad_chars.append(whole_text[i])

然后,我创建了具有正确字符的字典,并将其替换为文本。

chars_to_change = {'∆':'Δ', 'Ω':'Ω', '₂':'2'}
for c1, c2 in chars_to_change.items():
    whole_text = whole_text.replace(c1, c2)

请注意,可能会有更好的解决方案,尤其是在解决方案的第一部分中。如果发现改进或错误,请进行编辑