Cómo definir la codificación china en Python
Si utiliza caracteres chinos en el código fuente de Python, se producirá un error en tiempo de ejecución. La solución es agregar una declaración de codificación de caracteres al principio del código fuente. :
#! /usr/bin/env python
# -*- coding: cp936 -*-
El tutorial de Python señala que los archivos fuente de Python se pueden codificar en conjuntos de caracteres distintos de ASCII, preferiblemente existe#! Utilice una línea de comentario especial después de la línea para definir el conjunto de caracteres:
# -*- coding: encoding -*-
Según esta declaración, Python intentará convertir el carácter codificación en el archivo a codificación y escriba la codificación especificada directamente en texto Unicode siempre que sea posible.
Tenga en cuenta que codificación: codificación solo le dice a Python que el archivo está codificado en el formato de codificación, pero el editor puede almacenar el archivo .py a su manera, por lo que el archivo final debe guardarse con la codificación. especificado en la codificación.
II.gt; gt; str
'\xd6\xd0\xce\xc4'
u "Chino" simplemente declara Unicode, la codificación real Nada ha cambiado. Este es el caso:
gt;gt;gt; str = "chino"
gt;gt;gt; str
gt;gt; /p>
gt;gt; str
p>
'\xd6\xd0\xce\xc4'
gt;gt;gt; str = str.
gt;gt;gt; str
u'\u4e2d\u6587'
Más lejos:
gt;gt;gt; s = 'chino'
gt;gt;gt; s.decode('gb2312')
u'\u4e2d\u6587'
u'\ u4e2d\u6587'
gt; gt; len (s)
4
gt;gt;gt; len(s.decode('gb2312) '))
2
gt; gt; s = u'chino'
gt; >
4
gt; gt; s = 'prueba china'
gt; gt; /p>
gt; gt; gt; len(s.
p>8
gt;gt;gt; len(s.decode('gb2312'))
9
10
gt;gt;gt; len(s.decode('gb2312'))
7 p>
Se puede ver que para la cadena no ASCII almacenada real, Python puede reconocer correctamente los caracteres chinos y los signos de puntuación en el contexto chino.
El prefijo "u" indica que la cadena. "Es una cadena Unicode". Esto es solo una declaración y no significa que la cadena sea realmente Unicode. Es como una mujer que dice ser una cadena Unicode, o una mujer que dice ser una cadena Unicode.
Sería como si una persona dijera tener 18 años cuando su edad real no es 18. ¡Fingir la edad no es raro en el mundo del deporte hoy en día!
Entonces, ¿cuál es el punto de declararte? Para Python, siempre que declare una cadena como Unicode, utilizará el mecanismo Unicode configurado para manejarla. Digamos que usa el controlador Unicode interno para la manipulación de cadenas, lo guarda como un carácter Unicode (doble byte), etc. etc. Obviamente, las cosas pueden salir mal al realizar operaciones Unicode en cadenas que en realidad no son Unicode. El prefijo u se usa solo si la constante de cadena es Unicode.