Zeichenkodierung beim Umgang mit Dateien in Python 3

Überblick

Bestätigung

--Überprüfen Sie den Vorgang mit Ihrem macOS

with open('utf-8.txt', mode='r') as fp:
    text = fp.read()
>> import locale
>> locale.getpreferredencoding() 
UTF-8
import locale
​
locale.setlocale(locale.LC_CTYPE, ('C')) 
print(locale.getpreferredencoding(False)) # => US-Werden Sie ASCII
​
with open('hoge.txt') as fp:
    text = fp.read()

Ergebnis

US-ASCII
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    text = fp.read()
  File "/path/to/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)
Memo
-LC ohne Setloacale_Das gleiche Verhalten kann durch direktes Ändern der Umgebungsvariablen CTYPE bestätigt werden.
- getpreferredencoding(do_setloacal=False)Andernfalls konnte die vorübergehend geänderte Codierung mit setlocale nicht abgerufen werden.

Korrespondenz

with open('utf-8.txt', encoding='utf-8') as fp:
    text = fp.read()
#! -*- coding:utf-8 -*-
import locale
import codecs
import six
​
locale.setlocale(locale.LC_CTYPE, ('C'))
​
with open('utf-8.txt', 'rb') as fp:
    text1 = fp.read()
    text1 = six.text_type(text1, 'utf-8')
​
with codecs.open('utf-8.txt', 'r', encoding='utf-8') as fp:
    text2 = fp.read()
​
assert text1 == text2

Zusammenfassung

--Python3 bestimmt die Standardzeichencodierung beim Umgang mit Dateien in Abhängigkeit vom Betriebssystem und dem Gebietsschema (LC_CTYPE)

Referenz

Recommended Posts

Zeichenkodierung beim Umgang mit Dateien in Python 3
Vorsichtsmaßnahmen beim Umgang mit Kontrollstrukturen in Python 2.6
Japanische Ausgabe beim Umgang mit Python im Visual Studio
Lesen Sie Dateien parallel zu Python
Bis zum Umgang mit Python in Atom
Tipps zum Umgang mit Binärdateien in Python
Umgang mit "Jahren und Monaten" in Python
Wie man Japanern nicht entgeht, wenn man mit json in Python umgeht
[Python] Holen Sie sich die Dateien mit Python in den Ordner
gRPC-Methoden, die beim Umgang mit Protokollpuffern verwendet werden, geben Python CopyFrom, Extend ein
Hinweis zur Codierung bei LANG = C in Python
Zeichenkodierung bei Verwendung des CSV-Moduls von Python 2.7.3
Behandeln Sie Zip-Dateien mit japanischen Dateinamen in Python 3
Teilen Sie Dateien beim Schreiben des Vim-Plugins in Python
Kodierung des Urteils in Python
[Python] Umgang mit mehreren Aufruffehlern in ray.init
In GCS mit Python platzierte Zeichenketten werden beim Anzeigen mit einem Browser verstümmelt
Mailbox-Auswahl beim Abrufen von Google Mail mit imaplib von Python
Base64-Codierung von Bildern in Python 3
Schaben mit Selen in Python
Betreiben Sie LibreOffice mit Python
Debuggen mit pdb in Python
Umgang mit Sounds in Python
Sortieren von Bilddateien mit Python (2)
Sortieren Sie große Dateien mit Python
Sortieren von Bilddateien mit Python (3)
Scraping mit Tor in Python
Tweet mit Bild in Python
Bilddateien mit Python sortieren
Achtung bei os.mkdir in Python
Kombiniert mit Ordnungszahl in Python
Integrieren Sie PDF-Dateien in Python
TXT-Dateien mit Python lesen
Fehler beim Spielen mit Python
In Python gelernter Zeichencode
Problem, Parameter beim Umgang mit Blender aus Python nicht zu kennen
Vorsichtsmaßnahmen bei der Verwendung von Python mit AtCoder
Dinge, die Sie bei der Verwendung von CGI mit Python beachten sollten.
Wovon ich süchtig war, als ich mit riesigen Dateien in einer Linux 32-Bit-Umgebung umging
Zahlenerkennung in Bildern mit Python
Verschieben von CSV-Dateien mit Python Teil 1
Testen mit Zufallszahlen in Python
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
GOTO in Python mit erhabenem Text 3
Arbeiten mit LibreOffice in Python: Importieren
Scraping mit Selen in Python (Basic)
Bearbeiten von EAGLE .brd-Dateien mit Python
Verhalten beim Auflisten in Python heapq
CSS-Analyse mit cssutils in Python
Bearbeiten Sie Dateien und Ordner in Python
[Python] POST-WAV-Dateien mit Anforderungen [POST]
Numer0n mit Elementen, die mit Python erstellt wurden
Umgang mit JSON-Dateien in Python
Laden Sie Google Drive-Dateien in Python herunter
Mit OpenSSL mit Python 3 verschlüsselte Dateien entschlüsseln
JSON-Codierung und -Decodierung mit Python
Verwenden Sie rospy mit virtualenv in Python3
Sortieren Sie große Textdateien in Python
Behandeln Sie Excel-CSV-Dateien mit Python
Verwenden Sie Python in pyenv mit NeoVim
[Anfänger] Extrahieren Sie Zeichenketten mit Python