ホームページ >バックエンド開発 >PHPチュートリアル >JS_PHP チュートリアルの encodeURIComponent 関数を使用して PHP によってデコードされたコード

JS_PHP チュートリアルの encodeURIComponent 関数を使用して PHP によってデコードされたコード

WBOY
WBOYオリジナル
2016-07-21 15:20:361669ブラウズ

JS の encodeURIComponent 関数で中国語をエンコードした後、php でデコードするにはどうすればよいですか? ?
前提: エンコード前の中国語は、gbk、gb2312、utf-8 などである可能性があります。

コードをコピーします コードは次のとおりです:

urldecode()
iconv()


中国語をエンコードするには、JS で encodeURIComponent を使用します。 PHP ,$q); 必要な文字列を取得できますが、その中で gb2312 は実際のアプリケーションに応じて決定されます。まだ理由がわからない場合は、次の記事を読んでください

URL エンコード変換、escape() encodeURI( ) encodeURIComponent()

この記事では、URL をエンコードするための 3 つの関数を紹介します:escape()、encodeURI()、encodeURIComponent()

escape() メソッド:
ISO ラテン文字セットを使用して、指定された文字列をエンコードします。すべてのスペース、句読点、特殊文字、およびその他の非 ASCII 文字は、%xx 形式の文字エンコーディングに変換されます (xx は、文字セット テーブル内の文字エンコーディングの 16 進数と同じです)。たとえば、スペース文字に対応するエンコーディングは %20 です。アンエスケープ方式はその逆です。このメソッドでエンコードされない文字: @ * / +

encodeURI() メソッド:
UTF-8 エンコード形式を使用して、URI 文字列をエスケープ形式の文字列に変換します。このメソッドでエンコードされない文字: ! @ # $& * ( ) = : / ; + '

encodeURIComponent() メソッド: UTF-8 エンコード形式を使用して URI 文字列をエスケープ形式の文字列に変換します。 encodeURI() と比較して、このメソッドは / やその他の文字など、より多くの文字をエンコードします。したがって、文字列に URI の複数の部分が含まれている場合、このメソッドを使用してエンコードすることはできません。そうしないと、/ 文字がエンコードされた後で URL にエラーが表示されます。このメソッドでエンコードされない文字: ! * ( )


したがって、中国語の文字列の場合、文字列エンコード形式を UTF-8 形式に変換したくない場合は、元のページの文字セットとターゲットページは一貫しています)、エスケープを使用してください。ページが GB2312 またはその他のエンコードで、パラメーターを受け入れるページが UTF-8 エンコードされている場合は、encodeURI または encodeURIComponent を使用する必要があります。

注: エスケープ メソッドは、Uniform Resource Identifier (uri) のエンコードには使用できません。これをエンコードするには、encodeuri メソッドと encodeuricomponent メソッドを使用します。また、encodeURI/encodeURIComponentはjavascript1.5以降に導入され、javascript1.0ではエスケープが利用可能になりました。


使用法を要約すると、
1. デフォルトでは、HTTP/POST メソッドは、JavaScript の encodeURI と同じ役割を果たします。この方法でエンコードされたコンテンツはバックグラウンドに到達し、文字はすべて UTF-8 エンコード形式になります。
3. サーブレット/JSP で出力に使用される Content-Type が UTF-8 であると指定されている場合は、実行する必要はありません。これらのパラメータに対する特別なエンコードおよびデコード操作は通常である必要があります。それ以外の場合は、たとえば、ページが GBK エンコードされている場合は、次のように記述する必要があります:
String sPara = new String(request.getParamter("test").getBytes("iso-8859-1"),"GBK");
Eclipse を使用している場合は、GBK エンコードも使用できます。作業するときは、サーブレットおよび JSP ファイルのエンコーディングが content-type で設定されたものと同じである必要があることに注意してください。そうしないと、この時点で javac がファイル自体の文字を間違ってエンコードします。文字列が間違っているため、出力は役に立ちません。
6. 最後に、要約を作成します。
6.1. サーブレット/JSP ファイル自体のエンコードは、コンテンツ タイプの出力と一致している必要があります。そうでない場合は、追加のエンコードとデコードの手順が必要です。
6.2 、HTTP/POST モードおよび encodeURI モード、受信エンコーディングは UTF-8 です。通常の window.open(...)、つまり HTTP/GET モード、受信エンコーディングは同じです。ページのエンコードは一貫しています。
6.4. バックグラウンド デコードは、iso-8859-1 でデコードしてから、ターゲット エンコードを使用してエンコードする必要があります。
6.5. ");
ページにエコーされた中国語の文字がある場合は、charset=utf-8 という単語を追加する必要があります
request.setCharacterEncoding("UTF-8");//ページが POST 経由で送信され、中国語の文字が含まれている場合、これ文を追加する必要があります

このステートメントはプログラムの先頭に配置されます

6.6 プロジェクト属性のエンコードが「UTF-8」であること、およびリクエストページとレスポンスページのエンコードが一貫していることを確認してください(バックグラウンドでも構いません)。 -8. ファイル

属性と ContentType 設定が一貫していることを確認する必要があります




http://www.bkjia.com/PHPjc/325087.html
www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/325087.html技術記事 JS の encodeURIComponent 関数で中国語をエンコードした後、php でデコードするにはどうすればよいですか? ? 前提: エンコード前の中国語は gbk、gb2312、utf-8 などである可能性があります。 コードをコピーします コードは次のとおりです: urldecode() iconv() in...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。