Pregunta

Estoy tratando de ver lo que diferentes cadenas se vería en diferentes codificaciones ...

Por ejemplo:

>>> str1 = "asdf"
>>> str1.encode('utf-16')
'\xff\xfea\x00s\x00d\x00f\x00'
>>> str1.encode('base64')
'YXNkZg==\n'

Y los que todos me conseguir lo que quiero.

Pero me gustaría ver lo que ciertas cadenas se vería en gbk, GB2312, o GB18030.

>>> str1.encode('gbk')
'asdf'
>>> str1.encode('gb2312')
'asdf'
>>> str1.encode('gb18030')
'asdf'

¿No deberían las salidas sea algo distinto de 'asdf'?

Tengo Python 2.7 y puedo ver el gbk.py y los otros archivos en lib / codificaciones

Me estaba preguntando si veo ningún cambio en la salida, ya que esas cartas se mostrarán los mismos en la que codifica, o porque necesito de alguna manera permiten el uso de esas codificaciones (una especie de importación necesaria?) ...

¿Fue útil?

Solución

Mientras única bytes valores se utilizan 0-127, estas codificaciones son equivalentes a ASCII. Lo mismo es cierto para UTF-8. Para ver realmente la diferencia, tratar con algunos chinos reales.

Otros consejos

Desde la página Wikipedia:

Un carácter se codifica como 1 o 2 bytes. Un byte en el intervalo 00-7F es una solo byte que significa la misma cosa como lo hace en ASCII. Estrictamente hablando, hay 96 caracteres y 32 códigos de control en este rango.

Así que no, su cadena de prueba de caracteres ASCII no debe codificar como algo diferente (al menos no por GBK, no el registro de las variedades).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top