【发布时间】:2012-11-22 12:07:02
【问题描述】:
我一直在用特殊字符(捷克语字母)解析一些 docx 文件(UTF-8 编码的 XML)。当我尝试输出到标准输出时,一切都很顺利,但是我无法将数据输出到文件中,
回溯(最近一次通话最后一次):
文件“./test.py”,第 360 行,在
ofile.write(u'\t\t\t\t\t\n')
UnicodeEncodeError: 'ascii' codec can't encode character u'\xed' in position 37: ordinal not in range(128)
虽然我明确地将 word 变量转换为 unicode 类型(type(word) 返回 unicode),但我尝试使用 .encode('utf-8) 对其进行编码,但我仍然遇到此错误。
下面是现在看起来的代码示例:
for word in word_list:
word = unicode(word)
#...
ofile.write(u'\t\t\t\t\t<feat att="writtenForm" val="'+word+u'"/>\n')
#...
我还尝试了以下方法:
for word in word_list:
word = word.encode('utf-8')
#...
ofile.write(u'\t\t\t\t\t<feat att="writtenForm" val="'+word+u'"/>\n')
#...
甚至这两者的结合:
word = unicode(word)
word = word.encode('utf-8')
我有点绝望,所以我什至尝试在ofile.write() 中编码单词变量
ofile.write(u'\t\t\t\t\t<feat att="writtenForm" val="'+word.encode('utf-8')+u'"/>\n')
如果有任何关于我做错的提示,我将不胜感激。
【问题讨论】:
-
您是否尝试过其他更适合该语言的编码?
-
我敢打赌,如果您使用的是最新版本的 Python,就不会遇到这些问题。
-
不幸的是,我在使用更合适的编码时遇到了同样的错误,我无法使用最新的 Python 版本,因为服务器上有 v2.7 将使用脚本
-
This answer 可能会有所帮助。