UnicodeEncodeError: el códec 'ascii' no puede codificar caracteres en la posición 0-4: ordinal no está en el rango (128)

python3 报错 处理 : UnicodeEncodeError: el códec 'ascii' no puede codificar caracteres en la posición 0-4: ordinal no está en el rango (128)

Uno, la escena del error

// 报错代码

Traceback (most recent call last):
  File "test_autoo3_2.py", line 214, in <module>
    main()
  File "test_autoo3_2.py", line 203, in main
    print("\u8bc6\u522b\u6b63\u786e\u6570:", len(right), "\u8bc6\u522b\u9519\u8bef\u6570\uff1a", len(error))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

Segundo, análisis de causa

Python3 cambió para usar la codificación Unicode (utf-8) de forma predeterminada. Lo he estado usando y nunca encontré dificultades causadas por problemas de codificación. Parece que los problemas de codificación deberían desaparecer por completo en la era Python3. Pero hubo un problema en estos dos días.
print () es equivalente a transferir una cadena de la memoria a tty, por lo que print () requiere encode (); generalmente no necesitamos encode () en print (), solo porque print () detecta la transmisión El parámetro se codifica automáticamente cuando es de tipo byte.
Python3 usa utf-8 por defecto, que puede ser confirmado por sys.getdefaultencoding (). Pero esto es solo el predeterminado.Cuando el sistema está configurado con variables de entorno como LC_ALL, LC_CTYPE, LANG, etc. (la prioridad de las tres es de mayor a menor), Python3 usa la codificación de estas variables; si estas variables son configurado con utf-8, entonces Python3 usa Todavía es utf-8, pero si no es utf-8, entonces Python3 no es utf-8.

Tres, la solucion

método uno
// 在文件前加上以下几句代码

import sys
reload(sys) 
sys.setdefaultencoding("utf-8")

Método dos

Codifique primero y luego entréguelo para imprimir ()

// An highlighted block
 # -*- coding: utf-8 -*-
Método tres

Codifique primero y luego entréguelo para imprimir ()

// An highlighted block
print("中文".encode(encoding="utf-8"))
Método cuatro

Restablecer la codificación de salida estándar directamente en Python

import sys
import codecs
 
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
print("中文")

Supongo que te gusta

Origin blog.csdn.net/m0_37882192/article/details/108972722
Recomendado
Clasificación