これは、標準のUTF-8
エンコーディング(現在は一般的にウェブ環境で使用されています)ではなく、旧式のMS-Windows独自のWindows-1252
エンコーディングのURLでエンコードされたバージョンのようです。それは確かにまだいくつかのMS-Windows版で使用されている、それはISO-8859-1
またはISO-8859-15
とほぼ同じですが、MSは少し互換性がないことを試みるために、典型的な。
<?php
var_dump(urlencode('‡123'));
var_dump(urldecode('%87123'));
var_dump(iconv('Windows-1252', 'UTF-8', urldecode('%87123')));
出力は次のとおりです:
string(12) "%E2%80%A1123"
string(4) "�123"
string(6) "‡123"
におけるだから、復号結果これで、この簡単なスクリプトの例を見てみましょう
...ことは周知の戦略の結果に苦しみます
が
Windows-1252
でエンコードされた文字列として解釈することができるもの。そうであれば、それをstandatd
UTF-8
エンコーディングに変換すると、期待通りの結果が得られます。
あなたの状況は、おそらく、そのMS内部エンコーディングでエンコードされた文字列が、記録されたPHPので何とか魔法それはそのデコード仕事をしないと、無効なUTF-8エンコードされた文字列で結果を提供することを推測することはできません。どのエンコーディングを想定するべきかPHPに伝えなければなりません。それを自動的に検出することは不可能です。
ないあなたは、その文字列があなたの期待にデコード得ることを期待する理由を確認してください... 'でurlencode( '‡123')'私は '%E2%で80%のA1123'を取得... – arkascha