Codificar una cadena a GBK en Python
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?) ...
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).