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?) ...

Était-ce utile?

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).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top