Faites attention à LANG pour UnicodeEncodeError lors de l'impression du japonais avec Python 3

Résumé

Lorsqu'une erreur UnicodeEncodeError se produit dans Python3

phénomène

J'utilise Python 2 depuis environ 7 ans maintenant, mais je pense passer à 3 bientôt.

Dans Python3, j'ai entendu dire que les chaînes de caractères étaient unifiées en Unicode, ce qui le rendait pratique, mais je suis tombé sur un UnicodeEncodeError.

Le système d'exploitation est Ubuntu 14.04.4 LTS et Python est 3.5.2 installé par pyenv. Le code exécuté est Hello World ci-dessous.

hello_ja.py


# coding: utf-8                                                                                            
print("Bonjour le monde")

résultat

% python hello_ja.py
Traceback (most recent call last):
  File "sample.py", line 4, in <module>
    print("\u3053\u3093\u306b\u3061\u306f\u4e16\u754c")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)

Avec la série Python2, j'ai dû passer beaucoup de temps à utiliser des codecs, mais avec 3 séries, cela devrait fonctionner ...

Contre-mesures

mémorandum- #sys en python3.std(in|out|err)Appliquer le codage de Quand je lis, il semble que je regarde la variable d'environnement LANG lors de la sélection du code de caractère de la série Python3.

Quand j'ai vérifié les variables d'environnement, c'était le japonais utf-8.

% export | grep LANG
LANG=ja_JP.UTF-8

Si LANG = C, c'était la cause, mais cette fois cela semble différent.

Quand je suis retourné aux bases et vérifié si l'environnement japonais était installé en premier lieu, language-pack-ja n'était pas installé. Je l'ai installé avec la version anglaise de l'image, il semble donc que j'ai oublié de le mettre.

Installez le paquet et définissez les paramètres régionaux par défaut en fonction de Modifier les paramètres régionaux par défaut de Debian / Ubuntu.

% sudo apt-get install language-pack-ja
% sudo update-locale LANG=ja_JP.UTF-8

Vous pouvez désormais imprimer correctement le japonais.

% python hello_ja.py
Bonjour le monde

Recommended Posts

Faites attention à LANG pour UnicodeEncodeError lors de l'impression du japonais avec Python 3
(Note) Soyez prudent avec python argparse
[Python] Soyez prudent lorsque vous utilisez print
UnicodeEncodeError lutte avec la sortie standard de python3
Soyez prudent lorsque vous exécutez CakePHP3 avec PHP7.2
[Mémo Python] Soyez prudent lors de la création d'un tableau à deux dimensions (liste de listes)
Faites attention au type lorsque vous créez un masque d'image avec Numpy
Enquête lorsque l'importation ne peut pas être effectuée avec python
Soyez prudent lorsque vous travaillez avec des fichiers texte compressés au format gzip
Lorsque vous nommez des variables en Python, faites attention non seulement aux mots réservés, mais également aux conflits avec les fonctions intégrées.
Solution de contournement pour Flask-Mail n'envoyant pas de courrier japonais UTF-8 (Python3)
Pour pouvoir utiliser le japonais avec Python dans l'environnement Docker
Soyez prudent lors de la différenciation des vecteurs propres d'une matrice
Soyez prudent lors de la lecture de données avec des pandas (spécifiez dtype)
Récapitulatif des outils d'exploitation de l'interface graphique Windows avec Python
Sortie japonaise lors de l'utilisation de python dans Visual Studio
Précautions lors du calcul avec une chaîne pour TmeStampType de PySpark
Peut être utilisé avec AtCoder! Une collection de techniques pour dessiner du code court en Python!
Comment se connecter avec python (quand aucun gestionnaire n'a pu être trouvé pour le journal "__main__" apparaît)
Solution lorsque l'image ne peut pas être affichée avec tkinter [python]
[Pour les débutants] Résumé de l'entrée standard en Python (avec explication)
Simulez des dommages-intérêts tardifs pour les frais de garde d'enfants en souffrance avec Python
Tourner un tableau de chaînes avec une instruction for (Python3)
Évitez UnicodeEncodeError lors du lancement de requêtes avec le japonais dans MySQLdb de Python
[Introduction à Udemy Python3 + Application] 51. Soyez prudent avec les arguments par défaut
Analyse morphologique japonaise avec Python
Erreur lors de la lecture avec python
tesseract-OCR pour Python [version japonaise]
Voici un résumé des choses qui pourraient être utiles pour traiter des nombres complexes en Python
Comment ne pas échapper au japonais en traitant avec JSON en Python
Mécanisme de vérification automatique des peluches avec flake8 lors de la validation du code python
Soyez prudent lorsque vous spécifiez la valeur d'argument par défaut dans la série Python 3
J'ai créé beaucoup de fichiers pour la connexion RDP avec Python
L'histoire de la création d'un pilote standard pour db avec python.
[Jouons avec Python] Viser la génération automatique de phrases ~ Achèvement de la génération automatique de phrases ~
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
Mémorandum lors de l'exécution de Python sur EC2 avec Apache
Un mémo pour quand pip3 est installé avec python2.7 pour une raison quelconque
TensorFlow 2.2 ne peut pas être installé avec Python 3.8!
Soyez prudent avec les références de méthodes faciles
Premiers pas avec Python pour les classes PHPer
Premiers pas avec Python Bases de Python
Jeu de vie avec Python! (Le jeu de la vie de Conway)
10 fonctions du "langage avec batterie" python
4ème nuit de boucle avec pour
Parlez du texte japonais avec OpenJTalk + python
Soyez prudent avec la méthode append de Python
Implémentation de la méthode Dyxtra par python
Premiers pas avec python3
Quand matplotlib ne fonctionne pas avec python2.7
Coexistence de Python2 et 3 avec CircleCI (1.0)
Premiers pas avec Python pour les fonctions PHPer
Enregistrement de l'introduction de Python pour les nouveaux arrivants
Lors de l'utilisation de MeCab avec python dans virtualenv
Précautions lors de l'utilisation de six avec Python 2.5
[Python] Formater quand to_csv avec des pandas
Etude de base d'OpenCV avec Python
Optimisation mathématique pour un travail gratuit avec Python + PuLP
Comment gérer l'erreur SSL lors de la connexion à S3 avec Python boto
Utile au quotidien!? Semi-automatisation de la méthode de planification expérimentale la plus puissante de COSPA avec Python
Soyez prudent lorsque vous récupérez des tweets à intervalles réguliers avec l'API Twitter