我有 unicode 数据并希望将其写入文件。我正在使用python 2.6。我能够打印编码值,但无法将其写入文件。环境的默认编码是 UTF-8。也尝试使用编解码器,但也没有运气。这是我正在使用的示例代码片段。
#!/usr/bin/python
import sys
import codecs
import csv
sh = [u'T\xe9l\xe9vista S.A.', u'T\xe9l\xe9vista S.A.', 'Python']
print sys.stdout.encoding
f = codecs.open('listwrite.txt', 'w', encoding='latin-1')
for item in sh:
f.write(item)
f.close()
for i in sh:
print i.encode('latin-1')
#
输出:
UTF-8
Télévista S.A.
Télévista S.A.
Python
Contents of listwrite.txt
Télévista S.A.Télévista S.A.Python
#
如上所示,该文件是用 UTF-8 编码而不是 Latin-1 编写的。如何更改它并覆盖文件的默认编码。
编辑:2
此外,使用 csv 编写器编写会给出 UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 1: ordinal not in range(128)
下面的代码:
#!/usr/bin/python
import sys
import codecs
import csv
sh = [u'T\xe9l\xe9vista S.A.', u'T\xe9l\xe9vista S.A.', 'Python']
print sys.stdout.encoding
c = csv.writer(codecs.open('listwrite.txt', 'w', encoding='latin-1'), quoting=csv.QUOTE_NONE)
c.writerow(sh)
f.close()
for i in sh:
print i.encode('latin-1')