2

さまざまなエンコーディングでさまざまな文字列がどのように表示されるかを確認しようとしています...

例えば:

>>> str1 = "asdf"
>>> str1.encode('utf-16')
'\xff\xfea\x00s\x00d\x00f\x00'
>>> str1.encode('base64')
'YXNkZg==\n'

そして、それらはすべて私が欲しいものを私に与えます。

しかし、gbk、gb2312、またはgb18030で特定の文字列がどのように表示されるかを確認したいと思います。

>>> str1.encode('gbk')
'asdf'
>>> str1.encode('gb2312')
'asdf'
>>> str1.encode('gb18030')
'asdf'

出力は「asdf」以外のものにすべきではありませんか?

私はpython2.7を持っていて、lib/encodingsでgbk.pyと他のファイルを見ることができます

それらの文字がそのエンコーディングで同じように表示されるため、または何らかの方法でそれらのエンコーディングの使用を有効にする必要があるため(何らかのインポートが必要ですか?)、出力に変化が見られないかどうか疑問に思いました...

4

2 に答える 2

2

0 ~ 127 のバイト値のみが使用されている限り、これらのエンコーディングは ASCII と同等です。同じことが UTF-8 にも当てはまります。違いを実際に確認するには、実際の中国語を試してみてください。

于 2011-01-21T16:55:04.707 に答える
1

ウィキペディアのページから:

文字は 1 または 2 バイトとしてエンコードされます。00 ~ 7F の範囲のバイトは 1 バイトで、ASCII と同じことを意味します。厳密に言えば、この範囲には 96 文字と 32 の制御コードがあります。

いいえ、ASCII 文字のテスト文字列は別のものとしてエンコードされるべきではありません (少なくとも GBK の場合はそうではありません。種類を確認していません)。

于 2011-01-21T16:56:31.240 に答える