いくつかのテストを行いましたが、これをテストすると次のようになります。
http://127.0.0.1/test.php?x={some non-english string}
http://127.0.0.1/test.php?x=الapple
次の出力を調べることによって:
echo bin2hex($_GET["x"]);
Firefox
&ではChrome
、string の UTF-8 表現を取得しますd8a7d9846170706c65
。$_GET['x']
変数。ではIE
、 を取得し3f3f6170706c65
ます。どちらが間違っていますか
そして、PHP はエンコーディングを変更せず、文字列をバイト配列としてしか認識しないことを知っています。
質問は:
これは、使用するブラウザによって制御されますか?
入力を常にUTF-8エンコーディングであると想定するのは信頼できますか?
ブラウザがサーバーに送信するエンコーディングを管理する方法はありますか? すべてのブラウザで?