jcode.phpの話
おい!何年前の話だよ!年齢ばれるぞ!!
って言われそうだが、最近レトロPHPゲームの編集にハマッている。
その課程で友人から、
「なんか「例」が「ヒ」になるんだけど・・・」
という謎の不具合報告を頂いた。
真っ先にエンコードを疑うが・・・
かつてperlでブラウザゲーをいじっていた時は、能などの字が文字化けする、という問題に遭遇した事があった。これはエスケープ文字などの問題で、半角の¥マークを入れると対処できた。
今回もそんな感じか?と思って¥マークを入れてみたが、改善せず・・・。
ま、言語が違うから当然なんですが(にわか
jcode.phpに原因が
それでもあきらめずエンコードの問題だと思って漁っていくと、どうやら半角カナを全角仮カナに直す部分に不具合があるようだった。
当初は作者さんに報告しようと思っていたが、最終更新履歴は2004年。サイトはとっくの昔に閉鎖されており、「最新版ぐらいあるやろー」という目論見は崩れ去った。
修正
私が使っていたのはUTF8の半角カナを全角カナに直す機能。どうもエンコード表16進数上二桁がE0(224)以上で、下二桁が半角カナとダブってしまうと、その全角カナに直されてしまうようだった。
とはいえ、大して知識も無い状態で、大幅にリファクタなんてするのも怖い。というわけで、処理の上の方に上二桁を限定するif文を一個追加して、ヨシ!という感じ(幸いな事に半角カナはEFにまとまっているようだった)。デグレってませんように・・・。
まとめ
全部が?になるとかじゃなくて、一部だけ文字化けするときは、やっぱりエンコード系を疑った方がいいなって。
しかし・・・この記事誰かの参考になるの?