PHP の urldecode() 関数は、URL エンコードされた文字列をデコードするための貴重なツールです。ただし、文字列が UTF-8 でエンコードされている場合は、不十分な場合があります。
問題:
次の URL エンコードされた文字列を考えてみましょう:
Ant%C3%B4nio+Carlos+Jobim
urldecode() を使用してデコードしようとすると、次の出力が生成されます:
Antônio Carlos Jobim
予想される「Antônio Carlos Jobim」の代わりに。
解決策:
この問題を解決するには、UTF-8 エンコーディングもデコードする必要があります。 PHP の utf8_decode() 関数はこの目的を果たします:
echo utf8_decode(urldecode("Ant%C3%B4nio+Carlos+Jobim"));
これは正しい文字列を出力します:
Antônio Carlos Jobim
説明:
URL エンコード特定の文字を 16 進数の対応する文字に置き換えることが含まれます。一方、UTF-8 エンコーディングは複数のバイトを使用して文字を表現するため、16 進コードとして誤って解釈される可能性があります。 utf8_decode() と urldecode() を組み合わせることで、UTF-8 形式と URL 形式の両方でエンコードされた文字列を正しくデコードできます。
以上がPHP の urldecode() を超えて UTF-8 でエンコードされた URL をデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。