UnicodeError从文件中读取重音葡萄牙语字符

时间:2016-05-18 14:37:10

标签: python python-2.7 encoding utf-8

前言

这是一个寒冷,下雨天,在2016年中期,开发人员仍在使用python编码问题而不使用Python 3.0。伟大的S.O社区会帮助他吗?我不知道,我们将不得不等待和看到

范围:

我有UTF-8 encoded file,其中包含带重音的字词,例如CURRÍCULONÓS。由于某些原因我无法掌握,我无法使用Python 2.7正确阅读它们。

代码段:

import codecs

f_reader = codecs.open('PATH_TO_FILE/Data/Input/kw.txt', 'r', encoding='utf-8')

for line in f_reader:
    keywords.append(line.strip().upper())
    print line

我得到的输出是:

TRABALHE CONOSCO
ENVIE SEU CURRICULO
ENVIE SEU CURRÍCULO  
UnicodeEncodeError, 'ascii' codec can't encode character u'\xcd' in position 14: ordinal not in range(128)

编码,编码,编码:

我已经使用notepad ++将文件转换为常规utf-8和没有ByteOrderMark的文件,并且它向我展示了正常的字符,没有任何问题。顺便说一下,我正在使用Windows,默认情况下会将文件创建为ANSI。

问题:

如何才能正确阅读此文件,包括íó以及其他突出的字符?

为了更清楚,我想keep the accentuation我在内存中使用的字符串。

更新

这是关键字列表,在内存中,使用您可以看到的代码从文件中读取。

List of Keywords as read in memory

1 个答案:

答案 0 :(得分:0)

问题似乎不在于阅读,而在于印刷。你难过

  

顺便说一下,我使用Windows,默认情况下会创建ANSI文件。

我认为这包括打印到stdout。尝试更改sys.output编解码器:

sys.stdout = codecs.getwriter("utf-8")(sys.stdout)