【问题标题】:Unicode Error when opening text file - Geany打开文本文件时出现 Unicode 错误 - Geany
【发布时间】:2016-10-10 14:48:42
【问题描述】:

我正在尝试创建一个小程序来读取两个故事的内容,爱丽丝梦游仙境和白鲸记,然后计算每个故事中出现“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 编码似乎都会导致问题。

【问题讨论】:

  • 我想你可以在那里找到解决方案stackoverflow.com/questions/14630288/…
  • 实际上已经看过其中的一些,不幸的是我的 Python 技能非常基础,所以尝试实现他们的建议非常混乱,似乎没有帮助。
  • 打开文件时没有错误,只是您的控制台使用的编码(cp437)无法编码该字符。您真的需要打印文本才能阅读文件和计算字数吗?

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


【解决方案1】:

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

【讨论】:

  • 我使用的是 Windows,抱歉应该指定。不幸的是,这些选项都不起作用。除非我有误解,否则您能否澄清在执行 .py 文件之前应如何在控制台上运行某些内容?
  • 您可以尝试在Windows控制台中使用chcp 65001来切换您的代码页; chcp 是一个用于更改代码页的 Windows 命令行命令。
  • 您还可以在打印命令中添加编码忽略表达式。 print (contents.encode('cp437', 'ignore'))
猜你喜欢
  • 2010-10-21
  • 2017-04-27
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2013-08-19
相关资源
最近更新 更多