にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

変な文字化け

奇妙な文字化けがあった(ことを思い出した)のでメモしておく。

きっかけはこのツイート。twitpicの画像をご覧いただきたい。

twitter.com

「悰しい悰惴が倩瀨僯能です」は「新しい更新が利用可能です」が化けた物ではないか。下表にUnicodeスカラ値を示す。

60B0 3057 3044 60F4 60B0 304C
65B0 3057 3044 66F4 65B0 304C
5029 7028 50EF 80FD 3067 3059
5229 7528 53EF 80FD 3067 3059

Unicodeスカラ値を見ると、0x100の位が0に変化してるように見える。
となると、ひらがな、カタカナはU+30xxに含まれているので化けない。最後の「?U+FF1F」は私用領域の「  U+F01F」に化けているものと推測される。


同様の化け方をしているものが検索したら次のページが見つかった。見事に化けている。
http://download.nai.com/products/patches/spamassassin/suservice/2.0/japanese/readme.txt

エンコードUTF-16の様である。エンディアンはしっかり確認してないがLEか。
以下、漢字とそれが化ける前と推測される字を並べた表を載せる。数字はUnicodeスカラ値である。

5074 6008 60e5 40e5 400b 70b0 5083 908b 707a 8072
5e74 6708 65e5 4ee5 4e0b 74b0 5883 958b 767a 8a72
5053 407f 7028 504d 400a 8018 70ba 808d 5029 90a2
使
5f53 4f7f 7528 524d 4e0a 8a18 78ba 8a8d 5229 95a2
90cd 8081 60c5 5031 502b 60f8 905e 5085 50b9 5068
91cd 8981 60c5 5831 542b 66f8 985e 5185 5bb9 5168
䀀
4000 80ad 50e7 60fb 40d8 70fe 5058 70b6 604b 60d0
4e00 8aad 52e7 6dfb 4ed8 73fe 5b58 72b6 614b 63d0
409b 7079 509a 70ee 7084 50fe 9069 5008 6027 600e
4f9b 7279 5b9a 76ee 7684 5bfe 9069 5408 6027 660e
703a 7084 90d9 5007 40dd 803c 6088 5031 505c 6062
793a 7684 9ed9 5207 4fdd 8a3c 6d88 5931 505c 6b62
605f 401a 70ca 50aa 5031 70f4 60a5 9093 600d 50b3
6a5f 4f1a 76ca 55aa 5931 76f4 63a5 9593 640d 5bb3
80ab 50b3 707a 701f 5034 5008 80ac 40fb 80a0 500a
88ab 5bb3 767a 751f 5834 5408 8cac 4efb 8ca0 5f0a
703e 6007 703a 80e3 607a 504f 904c 509f 909b 9064
793e 6307 793a 89e3 6c7a 554f 984c 5b9f 969b 9664
605c 5028 4088 9032 50e6 706e 6096 5099 802d 50a2
6f5c 5728 4e88 9632 51e6 7f6e 6e96 5099 8a2d 5ba2
60d8 804c 8068 80fd 50c1 40e3 9062 8031 80fe 702c
69d8 884c 8868 88fd 54c1 4ee3 9762 8a31 8afe 7b2c
4009 8005 904d 5003 5071 506c 908b 60b2 8009 7081
4e09 8005 914d 5e03 5171 516c 958b 63b2 8f09 7981
9055 60d5 500b 40ba 60d2 5026 6029 9050 6001 80ea
9055 6cd5 500b 4eba 62d2 5426 6a29 9650 6301 8cea
9023 7061
9023 7d61

まだあるが飽きたのでやめる。
なかなかみごとにUnicodeスカラ値の0x0100の位の桁が0になっているようだ。

どうしたらこんな化け方するんだろうか。
詳しい方、原因が分かる方いらっしゃいましたらご教授願います。

文字化けJavascript

折角なので色々化けさせてみましょう。

フォーム版





ブックマークレット1: ページ丸ごと化けさせるもの

javascript:(function(){document.body.innerHTML=document.body.innerHTML.replace(/./g, function(m){return String.fromCodePoint(m.codePointAt(0)&0xF0FF);});})();

ブックマークレット用リンク

ブックマークレット2: 選択範囲を化けさせた結果をAlertで表示するもの

javascript:(function(){s=[...document.getSelection().toString()];s.forEach(function(c,i,a){a[i]=String.fromCodePoint(c.codePointAt(0)&0xF0FF);});alert(s.join(''));})();

ブックマークレット用リンク