3

我正在尝试用荷兰语将一些东西写到 CSV 文件中,这就是发生的情况

在下面的节目中,理想情况下,“Eéntalige affiche in Halle !!” 应该写在csv文件中。然而,它写的是“Eéntalige affiche in Halle !!”

# -*- 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éntalige affiche !!”

4

1 回答 1

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 代码点(é,带尖音的拉丁小写字母 E)以 UTF-8、C3 和 A9 十六进制编码为两个字节。如果您将这两个字节视为 Latin1,其中每个字符始终只有一个字节,您会得到Ãand ©

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

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

于 2013-02-12T13:31:15.673 回答