ホームページ  >  記事  >  バックエンド開発  >  PHPのurlencodeに関する問題

PHPのurlencodeに関する問題

WBOY
WBOYオリジナル
2016-06-13 13:38:54818ブラウズ

PHP URLencode の問題
現在のテスト ページは次のとおりです

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><?php
    $name = $_GET['name'];
    echo urlencode($name);
?>

XXX.php?name=data 構造にアクセスします
さまざまなブラウザから返される結果は実際には違う!
Firefox7 および IE9 での出力は %CA%FD%BE%DD%BD%E1%B9%B9 ですが、chrome での出力は %E6%95%B0%E6%8D%AE%E7%BB% です。 93%E6%9E%84! !
PHP の urlencode 関数で処理され、得られる結果がブラウザに関係するのはなぜですか?

もう 1 つの問題は、単純なフォームを作成したいことです。メソッドは get
ですが、テキストが中国語の場合、それが「データ構造」であると仮定して、エンコードされた結果が自動的にエンコードされてしまいます。それは%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84です。この結果はJavaScriptのencodeURIComponent処理の結果と同じです。
そして、php 側で処理するときは、%CA%FD%BE%DD%BD%E1%B9%B9 (つまり、php の URLencode) を取得する必要があります。
この状況にどう対処すればよいでしょうか?つまり、encodeURIComponentから結果が得られた場合、それをどのように処理してurlencodeの結果に変換するかということです。

-----解決策---------
うーん、%E6%95% B0 %E6%8D%AE%E7%BB%93%E6%9E%84
文字化け後のurlencodeの結果です。エンコード形式を変換します。
------解決策------------------
ディスカッション
URL を介して値を渡しており、ブラウザには「常に utf-8 エンコーディングで送信する」オプションがあるためです。

%E6%95%B0 %E6%8D%AE%E7%BB%93%E6%9E%84 は、utf-8 でエンコードされた URL エンコード
および
%CA%FD%BE%DD%BD%E1%B9% のデータ構造です。 B9 はデータ構造の URL エンコーディングです。gbk エンコーディング
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。