PHP 5.3.3を実行していて、$str=urlencode("£")
を使用している場合、$str
の値は%A3
です。しかし、urlencode
関数をクラス内から呼び出すと、$str
の値は%C2%A3
になります。クラスで実行すると、PHPのurlencodeが異なる結果を返します
私はまた、関数http_build_query
で£を渡そうとしましたが、これはクラスの外側/内部で実行したときの結果と同じバリエーションです。私はこれを回避するために、str_replace
を使用して、不要なエンコーディングを取り除いて$str
を取り除いていますが、なぜこれが起こっているのか本当に知りたいです。 urlencode
は、クラス内から呼び出されたときに別の文字セットを使用しているようです。
ご迷惑をおかけして申し訳ありません。
ファイルのファイルエンコーディングを確認しましたか? (utf-8/iso/...)? – Bazaim
"£"の実際の表現は "£"で、これに対するUTF-8ビットは '%C2%A3'です。それをチェックしました:[UTF-8エンコーディングデバッグチャート](http://www.i18nqa.com/debug/utf8-debug.html)出力がクラス内外で異なる理由については、わかりません。 – JazZ
'%C2%A3'はUTF-8で、'%A3'は(おそらく)ISO 8859-1ですので、どこかでエンコーディングの不一致があります。 – simon