4

尝试在 Python 2.7 中向文本文件写入一行,并具有以下代码:

# -*- coding: utf-8 -*-
...
f = open(os.path.join(os.path.dirname(__file__), 'output.txt'), 'w')
f.write('Smith’s BaseBall Cap') // Note the strangely shaped apostrophe

但是,在 output.txt 中,我得到了Smith‚Äôs BaseBall Cap,而不是。不确定如何纠正此编码问题?有这类问题的任何提示吗?

4

2 回答 2

13
于 2012-07-19T00:56:32.987 回答
1

有几种可能性,但第一个要检查的是输出文件实际上包含您认为的内容。您确定您没有查看编码错误的文件吗?一些编辑器可以选择您正在查看文件的编码。编辑器需要知道文件的编码,如果它将文件解释为 UTF-8 以外的其他编码,它甚至会显示错误的内容尽管文件的内容是正确的。

当我运行您的代码(在 Python 2.6 上)时,我会在文件中得到正确的输出。另一件事要尝试:使用codecs模块打开文件以进行 UTF-8 写入:f = codecs.open("file.txt", "w", "utf-8"). Then declare the string as a unicode string withu"'Smith's BaseBall Cap'"`。

于 2012-07-19T00:55:32.377 回答