Encodage de caractères lors du traitement de fichiers en Python 3

Aperçu

Vérification

with open('utf-8.txt', mode='r') as fp:
    text = fp.read()
>> import locale
>> locale.getpreferredencoding() 
UTF-8

--Parce que getpreferredencoding est ʻUTF-8`, le texte de utf-8 peut être lu sans erreur.

import locale
​
locale.setlocale(locale.LC_CTYPE, ('C')) 
print(locale.getpreferredencoding(False)) # => US-Devenez ASCII
​
with open('hoge.txt') as fp:
    text = fp.read()

Résultat

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)
Note
-LC sans setloacale_Le même comportement peut être confirmé en modifiant directement la variable d'environnement CTYPE.
- getpreferredencoding(do_setloacal=False)Sinon, le codage temporairement modifié ne pourrait pas être obtenu avec setlocale.

Correspondance

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

Résumé

--Python3 détermine le codage de caractères par défaut lors de la gestion des fichiers en fonction du système d'exploitation et de locale (LC_CTYPE)

référence

Recommended Posts

Encodage de caractères lors du traitement de fichiers en Python 3
Précautions lors du traitement des structures de contrôle dans Python 2.6
Sortie japonaise lors de l'utilisation de python dans Visual Studio
Lire des fichiers en parallèle avec Python
Jusqu'à traiter de python dans Atom
Conseils pour gérer les binaires en Python
Gérer les "années et mois" en Python
Comment ne pas échapper au japonais en traitant avec JSON en Python
[Python] Récupérez les fichiers dans le dossier avec Python
Méthodes gRPC utilisées lors du traitement du type de tampons de protocole dans Python CopyFrom, Extend
Remarque sur l'encodage lorsque LANG = C en Python
Encodage de caractères lors de l'utilisation du module csv de python 2.7.3
Gérer les fichiers zip avec des noms de fichiers japonais dans Python 3
Diviser les fichiers lors de l'écriture du plugin vim en python
Jugement de codage en Python
[Python] Traitement de plusieurs erreurs d'appel dans ray.init
Les chaînes de caractères placées dans GCS avec python sont déformées lorsqu'elles sont visualisées avec un navigateur
Sélection de la boîte aux lettres lors de la récupération de Gmail avec imaplib de python
Encodage base64 des images en Python 3
Grattage au sélénium en Python
Exploitez LibreOffice avec Python
Débogage avec pdb en Python
Gérer les sons en Python
Tri des fichiers image avec Python (2)
Trier de gros fichiers avec python
Tri des fichiers image avec Python (3)
Grattage avec Tor en Python
Tweet avec image en Python
Tri des fichiers image avec Python
Attention lorsque os.mkdir en Python
Combiné avec ordinal en Python
Intégrez des fichiers PDF avec Python
Lire des fichiers .txt avec Python
Erreur lors de la lecture avec python
Code de caractère appris en Python
Problème de ne pas connaître les paramètres lors de l'utilisation de Blender à partir de Python
Précautions lors de l'utilisation de Python avec AtCoder
Choses à garder à l'esprit lors de l'utilisation de cgi avec python.
Ce à quoi j'étais accro en traitant d'énormes fichiers dans un environnement Linux 32 bits
Reconnaissance des nombres dans les images avec Python
Translocation de fichiers CSV avec Python Partie 1
Tester avec des nombres aléatoires en Python
Précautions lors de l'utilisation de Pit avec Python
GOTO en Python avec Sublime Text 3
Travailler avec LibreOffice en Python: import
Scraping avec Selenium en Python (Basic)
Manipulation des fichiers EAGLE .brd avec Python
Comportement lors de la liste dans Python heapq
Analyse CSS avec cssutils en Python
Manipuler des fichiers et des dossiers en Python
[Python] Fichiers wav POST avec requêtes [POST]
Numer0n avec des objets fabriqués avec Python
Gestion des fichiers JSON en Python
Téléchargez des fichiers Google Drive en Python
Décrypter les fichiers cryptés avec OpenSSL avec Python 3
Encodage et décodage JSON avec python
Utiliser rospy avec virtualenv dans Python3
Trier les gros fichiers texte en Python
Gérer les fichiers Excel CSV avec Python
Utiliser Python mis en pyenv avec NeoVim
[Débutant] Extraire des chaînes de caractères avec Python