具有utf-8代码格式的Python CSV编写器

时间:2013-02-12 13:27:49

标签: python csv utf-8

我正在尝试用荷兰语写一个CSV文件,这就是发生的事情

在下面的节目中,理想情况下,“Ealleta Affiche in Halle !!”应该写在csv文件中。然而,它写的是“在哈雷的电子邮件!”

# -*- encoding: utf-8 -*-
import csv
S="Eéntalige affiche in Halle !!".encode("utf-8")
file=c = csv.writer(open("Test.csv","wb"))
file.writerow([S])

在CSV文件中==? “Eéntaligeaffiche in Halle !!”

1 个答案:

答案 0 :(得分:3)

您正在正确地写入数据。问题在于读取数据;它将UTF-8数据解释为拉丁语1:

>>> print('E\xe9ntalige affiche in Halle !!')
Eéntalige affiche in Halle !!
>>> 'E\xe9ntalige affiche in Halle !!'.encode('utf8')
b'E\xc3\xa9ntalige affiche in Halle !!'
>>> print('E\xe9ntalige affiche in Halle !!'.encode('utf8').decode('latin1'))
Eéntalige affiche in Halle !!

U + 00E9代码点(é,LATIN SMALL LETTER E WITH ACUTE)被编码为UTF-8中的两个字节,C3和A9中的十六进制。如果您将这两个字节视为Latin1,而每个字符始终只是一个字节,则会得到é

如何处理CSV文件和编码没有标准,您需要将编码调整到预期的目标应用程序以读取此信息。例如,Microsoft Excel根据当前代码页读取CSV文件。

如果您的CSV阅读器期望拉丁语1,请务必编码为拉丁语1。