「ワンダーラビットガール」はジャンプSQで連載中のエロいマンガである。兄が残した女の子の性癖リストを使って、弟が女の子を落としていく話。書いていて、何を言っているんだ?という気がしててきたけど、そういう話なのでしょうがない。ちなみに、性癖の「性」は性的の「性」ではなく、性質の「性」であって、性的嗜好だけではなくもっと広い意味を持っているらしい。
兄の残したリストのうちある女の子の性癖が文字化けしていて、さあ困ったぞ、というのがここ2話のストーリー。困るので復元してみよう。
まずは、文字を画像から読み取らないと始まらない。最近のIMEならば手書き入力で検索できる。
頑張って入力すると次のようになる。
3年A組 緑ノ 柊
性癖
┗髴イ蜃コ迢�‥
繧ュ繧キ繝� 繝ァ繝�繝・
このうち�
は解釈できなかった文字の代わりに表示されるもので、実際にどのようなバイト列だったかは分からない。参照。
漢字、半角カナ、漢字、半角カナ、…と並ぶのは、UTF-8で書かれたテキストをShift_JISと解釈した場合の特徴である。だいたいの日本語はUTF-8では3バイトで表現され、Shift_JISでは漢字は2バイトで半角カナは1バイトだから、このようになる。
文字列をUTF-8でエンコードし、Shift_JISでデコードする処理は、Pythonだと次のようになる。�
はたぶん1バイトの文字だろうから、とりあえず?
としておいた。
# coding: utf-8
x = u"""髴イ蜃コ迢?‥
繧ュ繧キ繝? 繝ァ繝?繝・"""
print (x
.encode("shift_jis", errors="replace")
.decode("utf-8", errors="replace")
.encode("shift_jis", errors="replace"))
最初の行のutf-8はスクリプトの文字コードで、最後の行のshift_jisは画面の文字コードなので、適当に。encodeとdecodeのデフォルトの動作では変換に失敗すると例外を吐いてしまうので、errors="replace"
を指定して失敗した文字を別の文字に置き換えて処理を続行させている。実行結果は次の通り。
露出???d
キシ?? ョ??ュ
今月(2015年1月)号で、「この子の性癖って露出癖――!?」という台詞が出てきているので、正しそう。
「癖」が正しく復元されていない。UTF-8の「癖」はE7 99 96
でこれをShift_JISで解釈すると最初の1文字は逋
になるはず。文字化けっぽくするために修正が加えられているのかもしれない。2行目のカタカナも謎。今まで、このマンガで性癖以外に何か説明が書いてあることはあっただろうか……? どこかで文字コードを変えれば読めるようになるはずので、次号以降の主人公に期待しよう。
表にまとめた。
Shift_JIS | 髴 | イ | 蜃 | コ | 迢 | � | ‥ | ||||
バイト列 | E9 | 9C | B2 | E5 | 87 | BA | E7 | 8B | ?? | 81 | 64 |
UTF-8 | 露 | 出 | ? |
Shift_JIS | 繧 | ュ | 繧 | キ | 繝 | � | 繝 | ァ | 繝 | � | 繝 | ・ | |||||||
バイト列 | E3 | 82 | AD | E3 | 82 | B7 | E3 | 83 | 3F | 20 | E3 | 83 | A7 | E3 | 83 | 3F | E3 | 83 | A5 |
UTF-8 | キ | シ | ? | ョ | ? | ュ |
実際のファイルを http://sanya.sweetduet.info/wonder_rabbit_girl.txt に置いた。ヘッダでShift_JISを指定している。ブラウザのエンコードをUTF-8にすれば、ここまでの説明のようにある程度読めるはず。
追記
Hi-king
狂(E78B82)ですかね
たしかに。ShiftJISだと0x82
だけだと文字にならないので�と辻褄が合う。
Hi-kingさん曰く、カタカナは「(エ)キシビジョニズムではないか?」とのこと。たしかにその通りだと思う。「エキシビジョニズム」をUTF-8で表現すると、
文字 | バイト列 |
---|---|
エ | E3 82 A8 |
キ | E3 82 AD |
シ | E3 82 B7 |
ビ | E3 83 93 |
ジ | E3 82 B8 |
ョ | E3 83 A7 |
ニ | E3 83 8B |
ズ | E3 82 BA |
ム | E3 83 A0 |