python -X utf8
PYTHONIOENCODING
et la valeur ʻutf-8`."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
http.server
ou quelque chose, par exemplesys.stdout = io.TextIOWrapper (sys.stdout.buffer, encoding = 'utf-8')
et buffer
n'existe pas (dans sys.stdout
) ".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".
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)
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`.