Codificación de 10 caracteres

El contenido de hoy puede resumirse en una oración:

Usa python3 para tirarte pedos

Como la conclusión es relativamente importante, se enumera primero

Conclusión

1. La memoria se repara usando unicode, lo que podemos cambiar es el formato utilizado para guardar en el disco duro
inglés + caracteres chinos- "unicode-" gbk
inglés + japonés- "unicode-" shift-jis
caracteres universales "-unicode-" utf-8

2. El problema del acceso al archivo de texto ilegible está en
mal estado: la solución es que el formato de codificación se debe configurar para admitir el formato de la cadena en el archivo
. La solución es que el formato de codificación del archivo se almacena en el disco duro. Qué formato de codificación se lee en la memoria

 

3. La codificación predeterminada del intérprete de Python para leer archivos
Python3 predeterminado: utf-8
Python2 predeterminado: ASCII

Especifique el encabezado del archivo para modificar la codificación predeterminada:
escriba en la primera línea del archivo py:
#coding: gbk

4. La regla principal para garantizar que las dos primeras etapas del programa python no se vean alteradas:
especifique la
codificación del encabezado del archivo #: el formato de codificación utilizado cuando el archivo se almacenó originalmente en el disco duro


5.
El tipo str de python3 se almacena directamente en el formato unicode de forma predeterminada, y de todos modos no se puede confundir.
Asegúrese de que el tipo str de python2 no se distorsione
x = u '上'


6. Comprenda que el
intérprete de python2 tiene dos tipos de cadenas: str, unicode
# str type
x = '上' # El valor de la cadena se almacenará en el espacio de memoria del valor de la variable de acuerdo con el formato de codificación especificado por el encabezado del archivo
# unicode type
x = u ' Force '# Fuerza para guardar como unicode

 

Una vez introducido

El tipo de cadena de caracteres y el contenido del archivo de texto están compuestos de caracteres, pero cuando se trata del acceso de caracteres, se debe considerar la codificación de caracteres.

Las características típicas del punto de conocimiento de codificación de caracteres es que hay muchas teorías y pocas conclusiones, pero para el desarrollo, solo necesita recordar las conclusiones. Permítanos presentarlo un poco.

 

Dos reservas de conocimiento.

2.1 Hardware de tres núcleos

Todo el software está por encima del hardware en ejecución. Los tres hardware principales relacionados con el software en ejecución son CPU, memoria y disco duro. Necesitamos aclarar tres puntos

Copiar

# 1, antes de que se ejecute el software, el código del software y los datos relacionados se almacenan en el disco duro

 

# 2. El inicio de cualquier software es leer datos del disco duro en la memoria, y luego la CPU toma las instrucciones de la memoria y ejecuta

 

# 3. Los datos generados durante la operación del software se almacenan primero en la memoria. Si desea guardar permanentemente los datos generados por el software, debe escribir los datos de la memoria en el disco duro

 

 

 

 

2.2 El proceso de leer el contenido del archivo por un editor de texto

Copiar

#Fase 1. Inicie un editor de archivos (editor de texto como nodepad ++, pycharm, word)

 

# Fase 2, el editor de archivos leerá el contenido del archivo del disco duro en la memoria

 

# Fase 3, el editor de texto mostrará el contenido que acaba de leer en la memoria en la pantalla

2.3 El flujo del intérprete de Python para ejecutar el archivo

Tome python test.py como ejemplo, el proceso de ejecución es el siguiente

Copiar

#Fase 1. Inicie el intérprete de Python, que es equivalente a iniciar un editor de texto

 

# Fase 2, el intérprete de Python es equivalente a un editor de texto, que lee el contenido de test.py del disco duro a la memoria

 

# Fase 3, el intérprete de Python interpreta y ejecuta el contenido de la memoria que acaba de leer y comienza a reconocer la sintaxis de Python 

2.4 Resumen

Las similitudes y diferencias entre el intérprete de Python y el editor de archivos son las siguientes

Copiar

# 1, el mismo punto: las dos primeras etapas son exactamente iguales, ambas leen el contenido del archivo en el disco duro en la memoria, como se detalla a continuación

El intérprete de Python interpreta el contenido del archivo de ejecución, por lo que el intérprete de Python tiene la función de leer los archivos py, que es lo mismo que el editor de texto.

 

# 2. Diferencias: en la etapa 3, el contenido leído en la memoria se maneja de manera diferente, como se explica en detalle a continuación

Después de que el editor de texto lee el contenido del archivo en la memoria, es para mostrarlo o editarlo, e ignora la sintaxis de Python, y el intérprete de Python lee el contenido del archivo en la memoria, pero no para darle una idea de lo que escribe el código de Python Pero para ejecutar el código de Python y reconocer la sintaxis de Python)

 

 

 

 

3. Introducción a la codificación de caracteres.

3.1 ¿Qué es la codificación de caracteres?

Cuando los humanos interactúan con las computadoras, usan caracteres que los humanos pueden entender, como caracteres chinos, caracteres ingleses, caracteres japoneses, etc.

La computadora solo puede reconocer números binarios, como se detalla a continuación

Copiar

# Los números binarios son números compuestos por 0 y 1, como 010010101010. La computadora se basa en el trabajo eléctrico, y las características de la electricidad son niveles altos y bajos. Los humanos corresponden al nivel alto como el número 1 y al nivel bajo como el número 0 desde el nivel lógico. Esto determina directamente que la computadora puede estar compuesta por 0 y 1. Número de

No hay duda de que desde los caracteres humanos hasta los números en la computadora, debe haber un proceso, como se indica a continuación.

 

 

 

El proceso de traducción debe referirse a un estándar específico, que se denomina tabla de codificación de caracteres, y la correspondencia uno a uno entre caracteres y números se almacena en la tabla.

La codificación en la codificación de caracteres se refiere al significado de la traducción o conversión, es decir, traducir caracteres que los humanos pueden entender en números que las computadoras pueden reconocer

 

3.3 Codificación y decodificación

El proceso de convertir caracteres en unicode en la memoria, y el proceso de convertir unicode en otra codificación, se denomina codificación de codificación

El proceso de conversión de unicode en memoria a caracteres, y de otras codificaciones a unicode, se denomina decodificación decodificación

En muchos tipos de archivos, solo la memoria del archivo de texto está compuesta de caracteres, por lo que el acceso al archivo de texto también implica el problema de la codificación de caracteres

 

 

3.4 El origen de UTF-8

Nota: Si el formato binario GBK se guarda en el disco duro, los caracteres ingresados ​​por el usuario solo pueden ser chinos o ingleses. De manera similar, si el formato binario guardado en el disco duro es el formato Shift_JIS, los caracteres ingresados ​​por el usuario solo pueden ser japoneses o ingleses ... Los caracteres que ingresamos contienen múltiples caracteres nacionales, entonces, ¿cómo lidiar con ellos?

Copiar

# 多 国 字 —√—》 Memoria (binario en formato unicode) —— X—》 Disco duro (binario en formato GBK)

 

# 多 国 字 —√—》 Memoria (binario en formato unicode) —— X—》 Disco duro (binario en formato Shift_JIS)

 

# 多 国 字 —√—》 Memoria (binario en formato unicode) —— √—》 Disco duro (binario en formato ???)

En teoría, es posible almacenar el binario en formato unicode en la memoria directamente en el disco duro, pero debido a que unicode utiliza de forma fija dos bytes para almacenar un carácter, si el carácter multinacional contiene una gran cantidad de caracteres en inglés, el uso del almacenamiento en formato unicode ocupará más Duplique el espacio (de hecho, los caracteres en inglés solo deben almacenarse en un byte), pero la ocupación del espacio no es el problema más fatal. Lo más fatal es que cuando escribimos desde la memoria en el disco duro, tomará el doble de tiempo, así que Cuando el binario unicode en la memoria se escribe en el disco duro o se transmite en función de la red, debe convertirse a un formato simplificado, que es utf-8 (nombre completo Formato de transformación Unicode, que es el formato de conversión de unicode)

Copiar

# Caracteres multinacionales — √ — Memoria (binario en formato unicode) —√— ”Disco duro (binario en formato utf-8)

 

 

 

 

Entonces, ¿por qué no usar utf-8 directamente en la memoria?

Copiar

UTF-8 tiene una longitud indefinida: un carácter inglés ocupa 1 Bytes, un carácter chino ocupa 3 Bytes y los caracteres raros se almacenan con más Bytes

 

También significa que si los caracteres ingresados ​​por el usuario son: hola, debe pasar por el proceso de cálculo en la memoria: "usted" debe usar 3Bytes, "y" debe usar 1Bytes, "bueno" debe usar 3Bytes, y luego puede almacenarse, Por lo tanto, si el formato UTF-8 se usa para almacenar caracteres directamente en la memoria, el tiempo total empleado = tiempo de cálculo + tiempo de almacenamiento, y el formato unicode de longitud fija se usa para almacenar caracteres en la memoria, lo que ahorra el tiempo de cálculo, por lo que se usa unicode en la memoria para El almacenamiento de caracteres desperdiciará espacio, pero aumentará la velocidad, este es un método para usar el espacio por tiempo

 

 

 

 

Aplicación de codificación de cuatro caracteres.

Aprendemos la codificación de caracteres para evitar caracteres confusos al acceder a los caracteres:

Copiar

# 1, el uso fijo de Unicode en la memoria no se distorsionará independientemente de los caracteres ingresados

 

# 2. Lo que podemos modificar es el método de codificación para guardar / recuperar el disco duro. Si la configuración de codificación es incorrecta, aparecerán caracteres confusos. El problema confuso se divide en dos tipos: confuso, confuso

 

# 2.1 Confuso: si el contenido ingresado por el usuario contiene caracteres chinos y japoneses, si simplemente se guarda en shift_JIS, el japonés puede escribirse normalmente en el disco duro, y debido a que los caracteres chinos no se encuentran en shift_jis, se produce la correspondencia.

 

# 2.2 Desordenado: si los datos en el disco duro se almacenan en formato shift_JIS, el formato GBK se usa para leer en la memoria

Resumen:

Copiar

# 1. Asegúrese de que el almacenamiento no esté desordenado: al escribir desde la memoria en el disco duro, el formato de codificación debe establecerse en el formato de codificación que admita los caracteres ingresados

# 2. Asegúrese de que el almacenamiento no esté desordenado: al leer del disco duro en la memoria, se debe usar el mismo formato de codificación que al escribir en el disco duro

4.1 Editor de texto nodpad ++ para acceder a archivos de texto

El editor de texto accede a todos los archivos de texto, y el contenido contenido en el archivo de texto son todos caracteres, por lo que acceder al archivo de texto implica problemas de codificación de caracteres.

4.2 Las dos primeras etapas del archivo ejecutado por el intérprete de Python

Las dos primeras etapas de ejecución del archivo py son el proceso en el que el intérprete de python lee el archivo de texto, y no hay diferencia entre las dos primeras etapas de edición de texto y la lectura del archivo de texto. El método de codificación se establece en el formato de codificación cuando el archivo se escribió originalmente en el disco duro. Si no está configurado, el intérprete de Python utilizará el método de codificación predeterminado. El valor predeterminado es utf-8 en python3 y ASCII en python2. Podemos especificar Encabezado de archivo para modificar la codificación predeterminada

  • Escriba el siguiente contenido incluyendo # en la primera línea del archivo

Copiar

# codificación: el formato de codificación utilizado cuando el archivo se escribió en el disco duro

El intérprete usará primero la codificación predeterminada para leer la primera línea del archivo. Dado que la primera línea está compuesta de inglés puro, cualquier codificación puede reconocer caracteres en inglés.

4.3 La tercera etapa del archivo ejecutado por el intérprete de Python

La función de configurar el encabezado del archivo es garantizar que las dos primeras etapas de la ejecución del programa python no sean ilegibles.Después de las dos primeras etapas, el contenido del archivo py se almacenará en la memoria en formato unicode.

Comience a reconocer la gramática de Python al pasar por la tercera etapa. Cuando encuentre un nombre específico de gramática = 'up' (el código en sí está almacenado en formato unicode), debe solicitar espacio en la memoria para almacenar la cadena 'up', esto Luego involucra la pregunta de qué código debe almacenarse en el "encendido".

En Python3, los valores de cadena se almacenan en formato unicode

Debido a que la prevalencia de Python2 es anterior a Unicode, en Python2, el valor del tipo de cadena se almacena de acuerdo con la codificación especificada en el encabezado del archivo (si la codificación no se especifica en el encabezado del archivo, entonces el intérprete seguirá su propia codificación predeterminada. Almacenamiento 'encendido'), por lo que esto puede causar problemas confusos

Copiar

# codificación: utf-8

x = '上' # El valor de x es binario en formato untf-8

print (x) # La operación de impresión es dar el valor de x, es decir, el binario en formato utf-8 al terminal. Cuando el terminal lo recibe, no es unicode (solo unicode tiene una correspondencia con los caracteres), por lo que el terminal realizará la operación: UTF-8 binary --- decoding-> binary en formato unicode, el terminal del proceso de decodificación usará su propia codificación predeterminada, y la codificación predeterminada del terminal en pycharm es utf-8, la codificación predeterminada del terminal cmd en Windows es gbk, Entonces, la operación de impresión se muestra normalmente en pycharm, pero está distorsionada en cmd debajo de Windows

 

# El efecto de ejecutarse en cmd bajo Windows es el siguiente

C: \ Usuarios \ Administrador> python2 E: \ aaa.py

Goteo

Se introdujo un remedio después de python2, es decir, agregar u antes del tipo de cadena obligará a que el tipo de cadena se almacene en unicode, que es consistente con python3, y el formato unicode se puede enviar directamente a cualquier terminal para imprimir Los personajes correspondientes no serán confusos

Copiar

# codificación: utf-8

x = u '上' # Incluso si el encabezado del archivo es utf-8, el valor de x todavía se almacena como unicode 

 

 

 

 

4.4 Uso de codificación de cadena y decodificación de decodificación

Copiar

# 1, formato unicode ------ codificación codificación ------> otros formatos de codificación

>>> x = '上' # en python3 se guarda como unicode en '上'

>>> res = x.encode ('utf-8')

>>> res, type (res) # unicode está codificado en formato utf-8, y el resultado de la codificación es el tipo de bytes, que puede usarse como binario directamente

(b '\ xe4 \ xb8 \ x8a', <clase 'bytes'>)

 

# 2. Otros formatos de codificación ---- decodificación decodificación ----> formato unicode

>>> res.decode ('utf-8') 

' Arriba'

Supongo que te gusta

Origin www.cnblogs.com/baozai168/p/12729027.html
Recomendado
Clasificación