おはつです。
4月から製品開発部でお世話になっているtomoです。
「%CA%AA%CE%AE」(物流)が正しくURLデコードできません!
WEBに転がっているものや、phpのurldecode()など、世の中のURLデコード処理プログラムでは文字化けしてしまうことが判明しました。
この文字コードはEUC-JPが正解なのですが、UTF-8と誤認してしまい、化けるのです。
実は一般的なURLデコーディングは文字コードの優先順位があって、UTF-8が優先されるようになっています。しかし「%CA%AA%CE%AE」(物流)はUTF-8のコードの取りうる範囲に見事に入っている為、UTF-8と誤認してしまうのです。
因みに
<UTF-8の取りうる範囲>
1バイト目 2バイト目 3バイト目 4バイト目 文字の種類
00-7F 制御コード
C0-DF 80-BF 2バイト文字
E0-EF 80-BF 80-BF 3バイト文字
F0-F7 80-BF 80-BF 80-BF 4バイト文字
<EUC-JPの取りうる範囲>
1バイト目 2バイト目 3バイト目 文字の種類
00-1F,7F 制御コード
20-7E ASCII
8E A1-DF 半角カナ
A1-FE A1-FE JIS漢字
8F A1-FE A1-FE JIS補助漢字
これはなんとかしなくては・・・
今、URLエンコードされたコードから文字コードを自動認識する処理をJavaでゴリゴリ作っているのですが、こんなコードも正しく認識するものを目指しております。
がんばれ、私!!
皆様に支えられながら、日々勉強中です。 これからもよろしくお願いいたします。
コメント