打开文本文件时出现Unicode错误 - Geany

时间:2016-10-10 14:48:43

标签: python python-3.x encoding text-files geany

我正在尝试创建一个小程序来阅读两个故事的内容,爱丽丝梦游仙境& Moby Dick,然后计算每个故事中“the”这个词的次数。

但是我在使用Geany文本编辑器打开文件时遇到问题。到目前为止,我一直在创建和使用我自己的小文本文件。

with open('alice_test.txt') as a_file:
    contents = a_file.readlines()

print(contents)

我收到以下错误:

Traceback (most recent call last):
  File "add_cats_dogs.py", line 50, in <module>
    print(contents)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python35-32\lib\encodings\cp437.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2018' in position 279: character maps to <undefined>

正如我所说,任何小型自制文本文件都没有遇到任何问题。

奇怪的是,当我在Python IDLE中使用上述代码时,即使我将UTF-8之间的文本文件编码更改为ANSII,我也没有问题。

我尝试将文本文件编码为UTF-8和ANSII,我还检查确保Geany的默认编码是UTF-8(也尝试不使用默认编码),以及在打开时使用而不使用固定编码非Unicode文件。

我每次都得到同样的错误。该文本文件来自gutenberg.org,我尝试使用另一个文件并得到同样的问题。

我知道Geany和文本文件之间一定存在某种问题,但我无法弄清楚是什么。

编辑:我找到了一种修复方法。 以下是给我提问的文字:https://www.gutenberg.org/files/11/11-0.txt 以下是我可以毫无问题地使用的文字:http://www.textfiles.com/etext/FICTION/alice13a.txt 前一个以UTF-8编码,底部一个在windows-1252中编码。我会想到反过来是正确的,但无论出于何种原因,UTF-8编码似乎都会导致问题。

1 个答案:

答案 0 :(得分:0)

你使用什么操作系统? Windows中也存在类似的问题。如果是这样,您可以在控制台中命令之前尝试运行chcp 65001。您也可以在# encoding: utf-8文件的顶部添加.py。希望这会有所帮助,因为我无法在我的机器上使用gutenberg.org的.txt文件回复相同的编码问题。