Beheben Sie den japanischen Schreibfehler UnicodeEncodeError in der Python-Datei

Ich denke, dass der Umgang mit Zeichencodes immer als das Dämonentor von Python bezeichnet werden kann. Als ich anfing, Python zu verwenden, hatte ich es satt, mit diesem Zeichencode umzugehen, und würde ich ihn wieder verwenden! Es gab eine Zeit, in der ich dachte. Ich bin jetzt daran gewöhnt. .. ..

Was hast du versucht zu tun?

  1. Rufen Sie das Abfrageprotokoll mit der DB-API mit einem Python-Skript ab.
  2. Schreiben Sie in die Datei.

Es ist nur das.

Wenn das Abfrageprotokoll einen japanischen Kommentar enthält, kann der UnicodeEncodeError am Anfang beim Schreiben auftreten.

Ich werde die Situation und Lösung schreiben. Python ist 2.7. Diesmal tut es mir leid. .. .. ..

Es war okay, als ich nachgesehen habe ...

Als ich es mit der DB-API bekam, konnte ich das Abfrageprotokoll problemlos abrufen und unnötige Zeichenfolgen löschen. Ich konnte auch ein Testprotokoll schreiben! Also dachte ich: "Oh, dann schreibe ich es einfach in eine Datei!"

Schreiben wir das in eine Datei.

# -*- coding: utf-8 -*-

#Eigentlich wird das Protokoll von der API erfasst, aber hier werden wir es als Zeichenfolge protokollieren, um den Vorgang zu überprüfen.
log = "aaa Japanisch"

with open("test.txt", "a") as f:
    f.write(log + "\r\n")

Schauen Sie sich die Datei test.txt an

aaa Japanisch

Es ist richtig geschrieben. Jetzt müssen Sie nur noch das Abfrageprotokoll von der API abrufen und ausführen. Ich habe mich gewundert. Wenn ich das Protokoll von der API abrufe und schreibe, tritt der folgende Fehler auf. .. (Es tut mir leid, aber ich werde den API-Teil weglassen)


Traceback (most recent call last):
  File "writetest.py", line 11, in <module>
    f.write(log + "\r\n")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 4-6: ordinal not in range(128)

__ Zusammenfassend wurde die von der API erhaltene Zeichenfolge als Unicode-Typ behandelt. Anscheinend scheint es in Python2 beim Schreiben mit Schreiben ein Fehler zu sein, der durch den Versuch verursacht wird, mit dem Standard-ASCII zu schreiben. __ __ Es wurde nicht im Detail untersucht, aber es scheint so.

Wie haben Sie es gelöst?

log = log.encode("utf_8")

Ich habe es einmal in utf-8 konvertiert und geschrieben.


# -*- coding: utf-8 -*-

#Protokolle mit API abrufen
log = (Protokolle mit API abrufen)

log = log.encode("utf_8")

with open("test.txt", "a") as f:
    f.write(log + "\r\n")

Apropos,

f.write(log.encode("utf_8") + "\r\n")

Aber es war ein ähnlicher Fehler.

Andere Lösungen

Einschließlich der obigen Lösung

Es scheint eine Methode wie zu geben.

Verhalten vom Unicode-Typ

Lassen Sie uns übrigens die einfache Operation vom Typ Unicode überprüfen.

# coding: utf-8

str_1 = "japanisch"
str_2 = u"japanisch"

print str_1
print str_2

print type(str_1)
print type(str_2)

print len(str_1)
print len(str_2)

print ("Buch" in str_1)
print (u"Buch" in str_2)

print str_1.find("Buch")
print str_2.find(u"Buch")

Wenn du das machst

japanisch# print str_1
japanisch# print str_2
<type 'str'>       # print type(str_1)
<type 'unicode'>   # print type(str_2)
9                  # print len(str_1)
3                  # print len(str_2)
True               # print ("Buch" in str_1)
True               # print (u"Buch" in str_2)
3                  # print str_1.find("Buch")
1                  # print str_2.find(u"Buch")

Ein kurzer Blick, Im str-Typ wird die Zeichenfolge im Byte-Format behandelt Der Unicode-Typ wird als Zeichen behandelt (das von einer Person intuitiv beurteilt werden kann). Sie können sehen, dass.

Aus diesem Grund denke ich, dass Unicode beim Umgang mit Zeichenketten einfacher zu handhaben ist.

Aus diesem Grund können Sie verstehen, dass das Protokoll, als das Protokoll zu Beginn von der API von Python erfasst wurde, vom Unicode-Typ erfasst wurde.

Diese Bewegung kannte ich übrigens überhaupt nicht.

Recommended Posts

Beheben Sie den japanischen Schreibfehler UnicodeEncodeError in der Python-Datei
Lesen und schreiben Sie JSON-Dateien mit Python
Schreiben Sie Python in MySQL
Behandeln Sie Zip-Dateien mit japanischen Dateinamen in Python 3
Python-Fehlerliste (Japanisch)
Japanische Ausgabe mit Python
So schreiben Sie in Error Repoting in Python auf GAE
Ich habe Python auf Japanisch geschrieben
Schreiben Sie Pandec-Filter in Python
Schreiben Sie die Beta-Distribution in Python
Schreiben Sie Python in Rstudio (reticulate)
#python python Vermeidung japanischer Syntaxfehler
Ich verstehe Python auf Japanisch!
Holen Sie sich japanische Synonyme mit Python
Verschieben von CSV-Dateien mit Python Teil 1
Schreiben Sie eine Dichotomie in Python
Schreiben Sie ein JSON-Schema mit Python DSL
Python ist UnicodeEncodeError im CodeBox-Docker
Schreiben Sie einen HTTP / 2-Server in Python
Schreiben Sie die AWS Lambda-Funktion in Python
Bearbeiten Sie Dateien und Ordner in Python
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Umgang mit JSON-Dateien in Python
Laden Sie Google Drive-Dateien in Python herunter
Sortieren Sie große Textdateien in Python
Schreiben Sie Selentestcode in Python
Schreiben Sie ein Kreisdiagramm in Python
Schreiben Sie das Vim-Plugin in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Lesen Sie Dateien parallel zu Python
Exportieren und Ausgeben von Dateien in Python
Schreiben Sie einen C-Sprach-Unit-Test in Python
Umgang mit Japanisch mit Python
Extrahieren Sie mit Python Zeichenfolgen aus Dateien
So beheben Sie den Fehler "Kein Kernel der Grammatik Python gefunden" in Atom
Suchen Sie nach Dateien wie Linux Find in Python
Ausgabebaumstruktur von Dateien in Python
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Geben Sie Anmerkungen für Python2 in Stub-Dateien ein!
[Illegale Hardware-Anweisung Python] Fehler in PyMC3
Dekorateur zur Vermeidung von UnicodeEncodeError in Python 3 print ()
Schreiben Sie eine kurze Eigenschaftsdefinition in Python
Fehler bei bereits verwendeter Adresse beheben
Schreiben Sie die O_SYNC-Datei in C und Python
Referenz der INI-Datei in Python oder Ruby
Schreiben Sie ein Caesar-Verschlüsselungsprogramm in Python
Automatisieren Sie Jobs, indem Sie Dateien in Python bearbeiten
Wörterbuchschlüsselfehler → Mit Schlüssel in dicionary beheben
Schreiben Sie eine einfache Giermethode in Python
Beispiel für den Umgang mit EML-Dateien in Python
Schreiben Sie mit f2py ein Python-Modul in fortran
Schreiben Sie ein einfaches Vim-Plugin in Python 3
Laden Sie Dateien in jedem Format mit Python herunter
Wie schreibe ich Ruby to_s in Python
Importfehler: Kein Modul mit dem Namen 'xxxxx' in Python3
Konvertieren Sie die FBX-Datei in Python in ASCII <-> BINARY
Zusammenfassung zum Importieren von Dateien in Python 3
Schreiben wir FizzBuzz mit einem Fehler: Python-Version
ModuleNotFoundError: Kein Modul mit dem Namen'_bz2 'in Python in pyenv