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 in Halle !!」

4

1 に答える 1

3

データを正しく書き込んでいます。問題は、データを読み取る側にあります。代わりに、UTF-8 データを Latin 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 で 2 バイト、16 進数で C3 および A9 にエンコードされます。これらの 2 バイトを代わりに Latin1 として扱うと、各文字は常に1バイトのみであり、代わりにÃandが得られ©ます。

CSV ファイルとエンコーディングの処理方法に関する標準はありません。この情報を読み取るには、目的のターゲット アプリケーションに合わせてエンコーディングを調整する必要があります。たとえば、Microsoft Excel は、現在のコードページに従って CSV ファイルを読み取ります。

CSV リーダーが Latin 1 を想定している場合は、必ず、代わりに Latin 1 にエンコードしてください。

于 2013-02-12T13:31:15.673 に答える