1
私は、次のPythonコードを持っている:なぜunicodecsvは正しく書き込まれませんか?
import unicodecsv as csv
import sys
with open("unicode_test.csv", "w+b") as csv_file:
writer = csv.writer(csv_file, encoding="utf-8")
writer.writerow([u'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf\xe4\xb8\x96\xe7\x95\x8c'])
これは "こんにちは世界" と言うCSVを作成する必要があります。代わりに、それは不気味な記述です。 16進エディタで最終製品を調べると、類似点が表示されます。EX YY ZZはC3 AX C2 YY C2 ZZに変換されますが、方法はわかりません。
私はWindows 10でPython 2.7.11を実行していますが、sys.stdout.encodingではコンソールに "cp437"と表示されています。
本当に答えはありませんが、 'unicode'を使って作業しているときに、Python 3でユニコードを扱う複雑な方法(とそれに関連する断続的なバグ)を解くよりも、プロジェクト全体をPython 3に移植する方が簡単です。できれば、Python 3を使う価値があります。 – Paul
'\ xe3 \ x81 \ x93'は、「こ」のUTF-8でエンコードされたバイトです。これをUnicode文字列として扱い、UTF-8 *として再度エンコーディングすることは正しくありません。それをバイト文字列として扱い、標準の 'csv'モジュールを使うか、@Sahanが示しているように正しいUnicode文字列を使います。 –