Ich habe folgende Python-Code:Warum wird Unicodecsv nicht richtig schreiben?
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'])
Dies sollte eine CSV erstellen, die "こ ん に ち は 世界", sagt; stattdessen schreibt es Kauderwelsch. Die Überprüfung des Endprodukts mit einem Hex-Editor zeigt Ähnlichkeiten: EX YY ZZ wird in C3 AX C2 YY C2 ZZ umgewandelt, obwohl ich nicht weiß, wie.
Ich verwende Python 2.7.11 unter Windows 10 und sys.stdout.encoding sagt "cp437" in der Konsole.
Nicht wirklich eine Antwort, aber wenn ich mit 'unicode' arbeite, ist es einfacher, ganze Projekte auf Python 3 zu portieren, als die verschiedenen komplizierten Wege (und die damit verbundenen zeitweiligen Fehler) beim Umgang mit Unicode in Python 2.7 zu entwirren . Wenn du kannst, ist es wahrscheinlich * way * wert, Python 3 zu benutzen. – Paul
'\ xe3 \ x81 \ x93' sind die UTF-8-codierten Bytes von' こ '. Dies als Unicode-String zu behandeln und es erneut als UTF-8 * zu codieren ist falsch. Behandle es als Byte-String und verwende das Standard-'csv'-Modul oder verwende einen korrekten Unicode-String, wie @Sahan gezeigt hat. –