Codieren eine Zeichenfolge zu GBK in Python
Frage
Ich versuche zu sehen, wie verschiedene Saiten in verschiedenen Codierungen aussehen würden ...
Zum Beispiel:
>>> str1 = "asdf"
>>> str1.encode('utf-16')
'\xff\xfea\x00s\x00d\x00f\x00'
>>> str1.encode('base64')
'YXNkZg==\n'
Und die bekommen mich alle, was ich will.
Aber ich würde gerne sehen, wie bestimmte Saiten in GBK, GB2312 oder GB18030 aussehen würden.
>>> str1.encode('gbk')
'asdf'
>>> str1.encode('gb2312')
'asdf'
>>> str1.encode('gb18030')
'asdf'
Sollten die Ausgänge nicht etwas anderes als 'ASDF' sein?
Ich habe Python 2.7 und ich kann den GBK.py und die anderen Dateien in lib/codiert sehen
Ich habe mich gefragt, ob ich keine Änderung in der Ausgabe sehe, da diese Buchstaben in dieser Codierung genauso angezeigt werden oder weil ich die Verwendung dieser Codierungen irgendwie aktivieren muss (eine Art Import benötigt?) ...
Lösung
Solange nur Bytewerte 0-127 verwendet werden, entsprechen diese Codierungen ASCII. Gleiches gilt für UTF-8. Um den Unterschied wirklich zu erkennen, versuchen Sie es mit einigen tatsächlichen Chinesen.
Andere Tipps
Von dem Wikipedia -Seite:
Ein Zeichen wird als 1 oder 2 Bytes codiert. Ein Byte im Bereich 00–7f ist ein einzelnes Byte, das dasselbe bedeutet wie in ASCII. Streng genommen gibt es 96 Zeichen und 32 Kontrollcodes in diesem Bereich.
Nein, Ihre Testzeichenfolge von ASCII -Zeichen sollte nicht als etwas anderes codieren (zumindest nicht für GBK, ich habe die Sorten nicht überprüft).