English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Método de implementación de configuración de la forma de codificación de archivos en Python

si desea usar python2si escribe chino en el archivo py, debe agregar una línea de comentario sobre la codificación del archivo, de lo contrario python2usará por defecto la codificación ASCII. (python3Este problema ya no existe, python3La codificación del archivo por defecto es UTF-8)

La anotación de la codificación debe estar en la primera o segunda línea, generalmente, las dos primeras líneas del archivo Python deben escribirse así:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

La primera línea especifica el intérprete de Python, la segunda línea especifica el modo de codificación del archivo Python. Hay varios métodos posibles para configurar la codificación:

1. El método de configuración con igual:

#!/usr/bin/python
# coding=<name of encoding>

2. La más común es la que lleva dos puntos (la mayoría de los editores pueden identificarla correctamente):

#!/usr/bin/python
# -*- coding: <name of encoding> -*-

3. vim: :}

#!/usr/bin/python
# vim: set fileencoding=<encoding name> :

La declaración de encabezado de codificación tiene los siguientes efectos:

Si hay comentarios en chino en el código, se necesita esta declaración

Los editores más avanzados (como mi emacs) lo usarán como el formato del archivo de código según la declaración de encabezado.

El programa decodificará inicialmente el objeto unicode 'La vida es breve', a través de la declaración de encabezado, (por lo tanto, la declaración de encabezado y el formato de almacenamiento del código deben ser consistentes)

Configurar el formato de decodificación predeterminado

import sys  # Importar el módulo sys, no es la primera carga de sys 
reload(sys) # Recargar sys 
sys.setdefaultencoding('utf8## Llamar a la función setdefaultencoding

Especialmente importante aquí es la segunda línea reload(sys), que no puede faltar. Si falta, no se puede ejecutar correctamente. ¿Por qué hay que recargar y no se puede llamar directamente? Porque la función setdefaultencoding se elimina después de que el sistema la llama, por lo que al importarla, ya no existe. Por lo tanto, es necesario recargar el módulo sys, de modo que setdefaultencoding esté disponible y pueda modificar el código de codificación del intérprete actual en el código.

En la carpeta Lib del directorio de instalación de Python, hay un archivo llamado site.py, donde se puede encontrar main() –> setencoding() –> sys.setdefaultencoding(encoding). Debido a que site.py se carga automáticamente cada vez que se inicia el intérprete de Python, la función main se ejecutará cada vez, y la función setdefaultencoding ya se ha eliminado.

Sobre sys.defaultencoding, se utiliza cuando no se especifica el método de decodificación. Por ejemplo, tengo el siguiente código:

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
s = '中文' # Nota: aquí str es del tipo str, no unicode 
s.encode('gb18030') 

Este código volverá a codificar s en gb18030 se forma, es decir, se realiza la decodificación unicode -> str. Porque s es de tipo str, por lo tanto

Python decodificará automáticamente s como unicode y luego lo codificará en gb18030. Debido a que la decodificación se realiza automáticamente por Python, no hemos especificado el método de decodificación, por lo que Python utilizará el método indicado por sys.defaultencoding. En muchos casos, sys.defaultencoding es

ANSCII, si s no es de este tipo, se producirá un error. En el caso anterior, mi sys.defaultencoding es anscii, y la forma de codificación de s es la misma que la del archivo, que es utf8 de, por lo que se produjo un error:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 en posición 
0: ordinal not in range(128) 

Para este tipo de situación, hay dos métodos para corregir el error:

Primero, indicar claramente la forma de codificación de s

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
s = '中文' 
s.decode('utf-8).encode('gb18030') 

Segundo, cambiar sys.defaultencoding al modo de codificación del archivo

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
import sys 
reload(sys) # Python2.5 Después de la inicialización, eliminaremos el método sys.setdefaultencoding, necesitamos recargar 
sys.setdefaultencoding('utf-8) 
str = '中文' 
str.encode('gb18030')

La implementación de la configuración de la codificación del archivo de python que he compartido con todos ustedes es todo el contenido que tengo. Espero que les sea útil como referencia y espero que todos nos apoyen y alentemos el tutorial.

Declaración: El contenido de este artículo se obtiene de la red, pertenece al autor original, se contribuye y carga de manera autónoma por los usuarios de Internet. Este sitio no posee los derechos de propiedad, no se ha realizado una edición humana y no asume la responsabilidad legal correspondiente. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @ para denunciar y proporcione evidencia. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción de derechos de autor.)

Te gustará