先日、クライアントさまより、UTFのとき全角ハイフンがおかしくなるよ!と連絡。

そ・・・そんなはずは(-_-;)、と思って調べたら本当でした。

その対策方法をメモメモ。

どうも、Jcode.pmのtrを使って

全角マイナス記号「-」(コードでは、\xE2\x88\x92)
(※見た目はよく似ているけど、ハイフンでもないし、ダッシュでもないので注意。)
を半角記号へ変換するときに、
半角チルダ「~」になっちゃったり、
\x3Fという通常の環境で見ることができないコードに変換されている模様。

ってことで、Jcodeでtrしたあと、これらを無理やり「-」(コード\x2D)に変換することで対応。
本当にチルダが来たときどうすんだ!?という感じ。

だったので、さらに調べたら、

http://d.hatena.ne.jp/littlebuddha/20081121/1227241729

こちらのサイトにまとめがありました。のでまぁこの通り設定。
全角の扱いって難しいですね。

何か調べたら同じハイフンでも、
「ハイフン」「ノンブレーキングハイフン」「ハイフネーションポイント」…などなどあるんですって。
文系出身ダメプログラマーな私にはグルグルする話です。。。

PHPのmb関数でも同様の問題がおきます。
ので、ハイフンに見える文字についての知識はUTFを扱うときは必ず身につけておく必要がありそうです。