7

次のように、shift-jis でエンコードされた文字列をデコードしようとしています。

string.decode('shift-jis').encode('utf-8')

私のプログラムでそれを表示できるようにします。

16 進数の "0x87 0x54" と "0x87 0x55" の 2 つの shift-jis 文字に遭遇すると、次のエラーが発生します。

UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 12-13: illegal multibyte sequence

しかし、それらは有効なシフト jis 文字であると確信しています: http://www.rikai.com/library/kanjitables/kanji_codes.sjis.shtml

また、shift-jis テキスト エディタではこれらの文字が黒いボックスとして表示されることにも気付きました。これは、認識されていないことを意味します。この 2 つの文字には、私のエディタと Python デコーダが機能しなくなる特別な理由があります。ヘルプ?

(申し訳ありませんが、これらの文字が存在する場合、それ以降はクリップボードに追加されず、自動的にユニコードに変換されるため、サンプル文字列を投稿できませんでした。ただし、それらの16進値を投稿しました。)

4

2 に答える 2

9

シフト JIS には複数のバージョンが存在します。コーデックshift_jisJIS X 0208ですが、その表はコーデックに対応するJIS X 0213shift_jisx0213です。

>>> u'⑲⑳Ⅰ'.encode('shift_jisx0213')
'\x87R\x87S\x87T'
于 2011-07-18T06:02:05.000 に答える