Lorsqu'une erreur UnicodeEncodeError se produit dans Python3
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 ...
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