Un véritable moyen pour les personnes utilisant python 3.8.0-2 à partir de Windows de travailler avec des caractères multi-octets

Première conclusion

en premier

"Cet article est écrit pour les personnes qui utilisent python3.8.0 à python3.8.2 à partir de Windows. Je ne connais pas python3.7 ou antérieur ou plus récent que python3.8.2. " J'ose le déclarer comme ça.

Jusqu'à ce que vous arriviez à cet article

  1. Essayer d'exécuter http.server ou quelque chose, par exemple
  2. Être intimidé par ʻUnicodeDecodeError`
  3. Exécutez sys.stdout = io.TextIOWrapper (sys.stdout.buffer, encoding = 'utf-8') et
  4. Le compilateur m'a grondé que "l'attribut buffer n'existe pas (dans sys.stdout) ".
  5. J'ai recherché les informations suivantes mais je n'ai pas pu les trouver facilement

N'est-ce pas? Apparemment ** sys.stdout.buffer semble être obsolète depuis la version 3.8 ** (?). sur cette preuve, Si vous demandez aux gens qui travaillent de cette façon, ils répondront 3.7 ou plus tôt, et si vous demandez aux gens qui échouent de cette façon, ils diront 3.8. (Cela peut être une coïncidence car je n'ai pas enquêté correctement. Je suis désolé si c'est le cas)

C'est déroutant car les informations antérieures à 3.8 indiquent "pour 3.x" ou "pour 3." À l'époque où les versions 3.6 et 3.7 étaient les dernières, je ne pensais pas que les spécifications changeraient avec la version 3.8, il semble donc que cela se soit généralisé. A partir de maintenant, j'aimerais que vous disiez quelque chose comme "pour python3.0-3.7" au lieu de dire "pour python3".

Pourquoi vous obtenez une erreur

Selon https://qiita.com/butada/items/33db39ced989c2ebf644, la sortie standard se compose de shift_jis dans windows10 et versions antérieures. Pour cette raison, si vous exécutez python3.8.2 ou une version antérieure sur Windows, ** quel que soit le code de caractère à l'intérieur de python, il sera automatiquement converti en shift_jis au moment de la sortie **. Une erreur se produit pendant ce processus. (À propos, dans python3 ~ 3.8.2, le code de caractère de type str est fixé à utf-8. Il y avait aussi un babillard qui suggérait " # coding: utf-8 ", mais c'est la spécification de l'encodage source)

Solution

En python3.7-3.8.2, lorsque vous démarrez python depuis la console, vous pouvez le démarrer en" mode UTF-8 "en ajoutant l'option -X utf8. Ici, l'imitation telle que "convertir automatiquement en shift_jis" est arrêtée.

・ Au fait, si vous souhaitez utiliser http.server, cela ne suffit pas. Définissez la variable d'environnement sur le nom de la variable PYTHONIOENCODING et la valeur ʻutf-8`.

Recommended Posts

Un véritable moyen pour les personnes utilisant python 3.8.0-2 à partir de Windows de travailler avec des caractères multi-octets
De la création d'un environnement Python pour les personnes inexpérimentées à Hello world
De la préparation à l'analyse morphologique avec python en utilisant polyglotte au marquage des mots partiels
Créez un outil qui secoue automatiquement furigana avec html en utilisant Mecab de Python3
Créer un environnement pour exécuter des fonctions C ++ à partir de Python avec Pybind11 (pour les utilisateurs de Windows et Visual Studio Code)
Recherche d'un moyen efficace d'écrire un Dockerfile avec Python avec de la poésie
Un moyen facile de gratter avec Python en utilisant Google Colab
Je veux travailler avec un robot en python.
De l'achat d'un ordinateur à l'exécution d'un programme sur python
Je veux dire aux gens qui souhaitent importer depuis un répertoire supérieur avec Python direnv
Conversion de Pandas DataFrame en System.Data.DataTable à l'aide de Python pour .NET
[Linux] Copie des données de Linux vers Windows avec un script shell
Probablement le moyen le plus simple de créer un pdf avec Python 3
Expérimentez pour créer un PDF indépendant pour Kindle avec Python
Un moyen simple d'éviter plusieurs boucles for en Python
Introduction à Python pour les utilisateurs de VBA - Appeler Python depuis Excel avec xlwings -
Utilisation de Rstan de Python avec PypeR
Système Python OCR Augmentez les caractères des images pour améliorer l'efficacité du travail
Que faire si Python ne fonctionne pas sur Git pour Windows
Création d'un environnement Windows 7 pour une introduction à l'apprentissage automatique avec Python
Essayez d'extraire une chaîne de caractères d'une image avec Python3
Le moyen le plus simple de créer un environnement d'utilisation Spleeter à l'aide de Windows
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[Remarque] Utilisation d'un écran LCD à 16 caractères à 2 chiffres (1602A) de Python avec Raspeye
Passer la liste de Python vers C ++ par référence dans pybind11
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
Tout, de la création d'un environnement Python à son exécution sous Windows
[Introduction à Udemy Python3 + Application] 47. Traitez le dictionnaire avec une instruction for
Comment gérer l'erreur OAuth2 lors de l'utilisation des API Google à partir de Python
J'ai trouvé un moyen de créer un modèle 3D à partir d'une photo.
Procédure de création d'un environnement virtuel Python avec VS Code sous Windows
Comment obtenir la valeur du magasin de paramètres dans lambda (en utilisant python)
Un script python pour Mac qui zippe sans caractères déformés sous Windows
Intégration de données depuis l'application Python sur Windows vers Amazon Redshift avec ODBC
Janken Poi avec Python Exécutons sur un serveur local Windows pour les débutants
Remarques sur l'utilisation d'OpenCV avec Windows10 Python 3.8.3.
Mémo pour demander des KPI avec python
[50 comptes] Transmission de clé à l'aide de Python pour Windows
Sortir les caractères de couleur en joli avec python
"Programmation Python AI" à partir de 0 pour Windows
# 5 [python3] Extraire des caractères d'une chaîne de caractères
Création d'un environnement Python 3.6 avec Windows + PowerShell
Comment utiliser BigQuery en Python
Conseils pour utiliser python + caffe avec TSUBAME
Python> Numéros de sortie de 1 à 100, 501 à 600> Pour csv
Pour faire fonctionner la station d'horodatage en Python
Appeler des commandes depuis Python (édition Windows)
Essayez d'embellir avec Talking Head Anime à partir d'une seule image [préparation python]
Notes de l'installation de Homebrew à la création d'un environnement Anaconda pour Python avec pyenv
Inversez les pandas DataFrame à l'envers avec seulement 15 caractères sans utiliser l'instruction for
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
Connexion SSH au serveur cible à partir de Windows en un clic sur un raccourci
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
Créez un environnement de développement local avec WSL + Docker Desktop pour Windows + docker-lambda + Python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Envoyer un message de Slack à un serveur Python