壊れた UTF-8 ストリームを検証する
頭の痛い壊れた UTF-8 の検証問題ですが、ネットでこんなコードを見つけました。
function check($check) { $sjis = mb_convert_encoding($check, "SJIS-win", "UTF-8"); $utf8 = mb_convert_encoding($sjis , "UTF-8" , "SJIS-win"); return ($check === $utf8); }
なんてわかりやすいんでしょうか。しかし、正しく機能するのか謎です。ちょっと試してみた限りではかなりの精度で誤りを検出できるようです。
実は、現在開発中のシステムがいろんな言語を扱う予定があるため UNICODE を使いたいのです。発想が非日本人っぽくて自己嫌悪してしまいそうですが、引き続き書籍などからヒントを得てみようと思います。
何か良い方法がわかり次第レポートいたします。