编码器无法编码字符:字符映射到<未定义>

4 投票
1 回答
11685 浏览
提问于 2025-04-18 14:42

我正在用这段代码在Python 2.7中读取一个docx文件:

import docx
document = docx.Document('sim_dir_administrativo.docx')
    docText = '\n\n'.join([
        paragraph.text.encode('utf-8') for paragraph in document.paragraphs])

然后我想用这段代码来解码文件里的字符串,因为里面有一些特殊字符(比如:ã):

print docText.decode("utf-8")

但是,我遇到了这个错误:

    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2013' in position
 494457: character maps to <undefined>

我该怎么解决这个问题呢?

1 个回答

7

打印函数只能打印你本地编码中包含的字符。你可以通过 sys.stdout.encoding 来查看你的本地编码是什么。如果想打印特殊字符,必须先把它们转换成你的本地编码。

# -*- coding: utf-8 -*-
import sys

print sys.stdout.encoding
print u"Stöcker".encode(sys.stdout.encoding, errors='replace')
print u"Стоескер".encode(sys.stdout.encoding, errors='replace')

这段代码摘自 这个stackoverflow的回答

撰写回答