ホームページ  >  記事  >  バックエンド開発  >  PHP の urldecode() を超えて UTF-8 でエンコードされた URL をデコードするにはどうすればよいですか?

PHP の urldecode() を超えて UTF-8 でエンコードされた URL をデコードするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-17 15:08:02157ブラウズ

How to Decode UTF-8 Encoded URLs Beyond urldecode() in PHP?

PHP での URL デコード: urldecode() を超えて

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。