Codificare una stringa per GBK in Python
Domanda
Sto cercando di vedere quali diverse stringhe sarebbe simile in differenti codifiche ...
Ad esempio:
>>> str1 = "asdf"
>>> str1.encode('utf-16')
'\xff\xfea\x00s\x00d\x00f\x00'
>>> str1.encode('base64')
'YXNkZg==\n'
E quelli tutto prendermi quello che voglio.
Ma mi piacerebbe vedere che cosa determinate stringhe sarà simile a GBK, GB2312, o GB18030.
>>> str1.encode('gbk')
'asdf'
>>> str1.encode('gb2312')
'asdf'
>>> str1.encode('gb18030')
'asdf'
Nel caso non le uscite essere qualcosa di diverso 'asdf'?
Ho Python 2.7 e posso vedere la gbk.py e gli altri file in lib / codifiche
mi chiedevo se non vedo alcun cambiamento dell'uscita perché quelle lettere appariranno lo stesso in quella codifica, o perché ho bisogno di qualche modo consentire l'uso di tali codifiche (una sorta di importazione necessaria?) ...
Soluzione
Finché solo byte di valori 0-127 sono utilizzati, queste codifiche sono equivalenti a ASCII. Lo stesso vale per UTF-8. Per veramente vedere la differenza, provare con alcuni cinesi attuali.
Altri suggerimenti
Dalla pagina Wikipedia:
Un carattere è codificato come 1 o 2 byte. Un byte nell'intervallo 00-7F è un singolo byte che significa la stessa cosa come avviene in ASCII. rigorosamente parlando, ci sono 96 caratteri e 32 codici di controllo in questo intervallo.
Quindi no, la stringa di caratteri ASCII prova non deve codificare come qualcosa di diverso (almeno non per GBK, non ho controllato le varietà).