Une chaîne à coder GBK en Python
Question
Je suis en train de voir ce que les différentes chaînes ressembleraient dans différents encodages ...
Par exemple:
>>> str1 = "asdf"
>>> str1.encode('utf-16')
'\xff\xfea\x00s\x00d\x00f\x00'
>>> str1.encode('base64')
'YXNkZg==\n'
Et ceux tous me faire ce que je veux.
Mais je voudrais voir ce que certaines chaînes ressembleraient à GBK, gb2312 ou GB18030.
>>> str1.encode('gbk')
'asdf'
>>> str1.encode('gb2312')
'asdf'
>>> str1.encode('gb18030')
'asdf'
ne doit pas les sorties être autre chose que 'asdf'?
Je python 2.7 et je peux voir le gbk.py et les autres fichiers dans lib / encodages
Je me demandais si je ne vois pas de changement dans la sortie parce que ces lettres montreront la même dans ce codage, ou parce que je dois permettre en quelque sorte l'utilisation de ces encodages (une sorte d'importation nécessaire?) ...
La solution
Tant que les valeurs que l'octet 0-127 sont utilisés, ces codages sont équivalentes à ASCII. La même chose est vrai pour UTF-8. Pour vraiment voir la différence, essayez avec quelques chinois réels.
Autres conseils
De la la page Wikipedia:
Un caractère est codé sous la forme 1 ou 2, octets. Un octet dans l'intervalle 00-7F est un seul octet qui signifie la même chose comme il le fait en ASCII. Strictement parlant, il y a 96 caractères et 32 codes de commande dans cette gamme.
Donc non, votre chaîne de test de caractères ASCII ne doit pas coder comme quelque chose de différent (du moins pas pour GBK, je n'ai pas vérifié les variétés).