奇妙な文字化けがあった(ことを思い出した)のでメモしておく。
きっかけはこのツイート。twitpicの画像をご覧いただきたい。
twitter.com何なのこいつ何を入れさせるつもりなの http://t.co/dYFVynv
— シェゴ (@syego) September 3, 2011
「悰しい悰惴が倩瀨僯能です」は「新しい更新が利用可能です」が化けた物ではないか。下表に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(''));})();