unicod python3, UTF-8, la codificación gbk y decodificar problemas de visualización chinos

carácter python3 codificación de dolor de cabeza.
Esto no es un gbk introductoria, UTF-8, Unicode representa cómo los conceptos básicos de Inglés, resumen carácter chino.
Hay muchos artículos en línea similares, no hay necesidad de ascender a aprender a entender lo que es el significado de cada bit indica.

Objetivo:
una comprensión clara de por qué codificación diferente python3, decodificación, ventanas, sistema operativo Linux, si los caracteres se pueden visualizar correctamente.

Requisito:
entender la diferente codificación de dos longitudes diferentes y el sistema de codificación para representar caracteres.
En python3, la conversión mutua entre varios códigos de caracteres Unicode como código intermedio para ir a través de la conversión. gbk convierte en Unicode, convierte a continuación en un Unicode de UTF-8.

Análisis:
Para distinguir los cuatro tipos de conceptos de codificación y decodificación,

1. Al escribir código de archivo codificado.
Notepad ++ selectivamente en el menú de "codificación", se puede ver el tipo de codificación en la barra de estado.
PyCharm en el menú "Archivo", "editor", "codificación de archivos" puede establecer la codificación predeterminada. Podemos ver el tipo de codificación en la barra de estado.

2.python3 declarado formato de decodificación de códigos.
# Código de codificación = gbk.
Python codificación declaración indica al compilador para codificar el formato de archivo de decodificación .py, no cambia la codificación por defecto del sistema y la codificación predeterminada local,
ni se utiliza para declarar el archivo de código actual formato de codificación, sino más bien una declaración del archivo de código actual la decodificación de método. En otras palabras,
el archivo de código de formato de codificación depende del editor que utiliza, y cómo decodificar el archivo depende de la declaración de codificación de archivos a la cabeza.
En general, el formato debe ser coherente con la codificación y la decodificación de formato, el formato de codificación y la codificación de declaración editor es decir, debe ser coherente.

Nota: Dependiendo del tipo de decodificación del código indicado, PyCharm cambiará automáticamente el tipo de codificación, la marca y el tipo de codificación y decodificación de los tipos coherente. Esta es la ventaja de PyCharm.

La codificación por defecto intérprete formato 3.python.
Cuando .py compilador Python lee el archivo, sin codificar declaración, el defecto del sistema de decodificación codificado archivo .py.
() Ver con import sys, sys.getdefaultencoding

4. local predeterminada que codifica
media local es el sistema operativo, es decir, el local predeterminada sistema operativo codificación predeterminada de codificación.
Obviamente, la codificación predeterminada del compilador pitón consistente a través de diferentes sistemas operativos, el sistema operativo de codificación predeterminado varía con el sistema operativo ha cambiado.
, Locale.getdefaultlocale () Ver con la configuración regional de importación. ventanas es gbk, Linux es UTF-8.

. Ejemplos 1:
a python3 una cadena Chino (str = 'en') codificación UTF-8, decodifica la declaración de códigos GBK, el código está escrito por gbk (método de escritura sistema de archivos) En una f2 archivo, el proceso se muestra en Linux.
análisis:

  1. archivo de código python3 con caracteres chinos codificación UTF-8 "medio" de b '\ xe4 \ XB8 \ xad'
  2. python3 intérprete utilizando el código de lectura nombradas GBK b '\ xe4 \ XB8 \ xad', para dar una distorsión de cadena (en forma de cadena Unicode a Unicode codificada en la memoria), si el carácter%.
  3. código python3 con el GBK codificación de caracteres% de GBK codificación de b '\ xe4 \ XB8 \ xad' escritura de archivos f2
  4. terminal de Linux se abre con UFT-8 b '\ xe4 \ XB8 \ xad', visualización normal

Ejemplos 2:
a python3 una cadena Chino (str = 'en') codificación UTF-8, decodifica el código de declaración de GBK, el código está escrito por UFT-8 (método de sistema de archivos de escritura) En un archivo F2, que se muestra en el Linux proceso.
análisis:

  1. archivo de código python3 con caracteres chinos codificación UTF-8 "medio" de b '\ xe4 \ XB8 \ xad'
  2. python3 intérprete utilizando el código de lectura nombradas GBK b '\ xe4 \ XB8 \ xad', para dar una distorsión de cadena (en forma de cadena Unicode a Unicode codificada en la memoria), si el carácter%.
  3. python3 UFT-8 código con el codificador, el correspondiente% UTF-8 codificación de caracteres (ciertamente no b '\ xe4 \ XB8 \ xad' el valor binario), escritura a un archivo F2
  4. extremo abierto Linux con un no UFT-8 b '\ xe4 \ XB8 \ xad' No se puede mostrar correctamente la codificación.

Artículo de referencia:

  1. https://www.cnblogs.com/yuanchenqi/articles/5956943.html

  2. https://mp.weixin.qq.com/s/JxD7LC33zbFD5QBxJ6jMWw

  3. https://blog.csdn.net/qq_33692803/article/details/81321340?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

Supongo que te gusta

Origin blog.51cto.com/jsahz/2480981
Recomendado
Clasificación