Python 2.7:设置I/O编码,是吗?

zhu*_*yxn 4 python character-encoding

尝试在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
Run Code Online (Sandbox Code Playgroud)

但是,在output.txt中,我得到了Smith‚Äôs BaseBall Cap.不确定如何纠正这个编码问题?有这种问题的任何准备吗?

Ned*_*der 11

您已声明您的文件使用UTF-8编码,因此您的字节字符串文字为UTF-8.卷曲撇号是U + 2019.在UTF-8中,它被编码为三个字节,\ xE2\x80\x99.这三个字节将写入输出文件.然后,当您检查输出文件时,它被解释为UTF-8以外的其他内容,而您会看到三个不正确的字符.

Mac OS Roman中,这三个字节显示为‚Äô.

您的文件是正确的UTF-8文件,但您查看的文件不正确.

  • @zhuyxn,您需要更新或更改您的文本编辑器。如果每个应用程序都默认采用 UTF-8,世界会好得多。 (2认同)