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

コンポーネント名 JS の encodeURIComponent 関数を使用して PHP によってデコードされたコード

WBOY
リリース: 2016-07-29 08:48:08
オリジナル
894 人が閲覧しました

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

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


urldecode()
iconv()


中国語をエンコードするには、JS で encodeURIComponent を使用します。iconv('UTF-8','gb2312', $) 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 メソッドはエンコードに「x-www-form-urlencoded」を使用します。これは、JavaScript の encodeURI と同じ役割を果たします。2. コンテンツがこの方法でエンコードされる場合。バックグラウンドに到達すると、文字はすべて UTF-8 エンコード形式になります。
3. サーブレット/JSP の指定された出力に使用される Content-Type が UTF-8 の場合、これらのパラメーターを特別なエンコードする必要はありません。
4. それ以外の場合、ページが GBK エンコードされている場合は、次のように記述する必要があります。
String sPara = new String(request) .getParamter("test").getBytes("iso-8859-1"),"GBK");
gb2312 エンコーディングを使用している場合は、GBK エンコーディングも使用できます。 5.サーブレットおよび JSP ファイルのプロパティに注意してください。エンコーディングは content-type で設定したものと同じである必要があります。そうしないと、この時点で javac がファイルを間違ってエンコードします。 、出力は役に立ちません。
6. 最後に、要約を作成します。
6.1. サーブレット/JSP ファイル自体のエンコードは、コンテンツ タイプの出力と一致している必要があります。そうでない場合は、追加のエンコードとデコードの手順を追加する必要があります。 HTTP/POST メソッドおよび encodeURI メソッドで渡されるエンコーディングは
6.3 です。通常の window.open(...)、つまり HTTP/GET メソッドで渡されるエンコーディングは、 ; スクリプトを実行するページ
6.4. バックグラウンド デコードは、iso-8859-1 でデコードしてから、ターゲット エンコードを使用してエンコードする必要があります。
返信に中国語の文字が含まれている場合、ページに表示されるときに、charset=utf-8 という単語を追加する必要があります
request.setCharacterEncoding("UTF-8");//ページが POST 経由で送信され、中国語の文字が含まれている場合、この文を追加する必要があります
このステートメントはプログラムの先頭に配置されます。
6.6 プロジェクト属性のエンコードが「UTF-8」であること、およびリクエスト ページとレスポンス ページのエンコードが一貫していることを確認してください (バックグラウンドでも構いません)。 8. ファイル
属性と ContentType 設定が一貫していることを確認する必要があります

上記は、componentname JS の encodeURIComponent 関数によって PHP でデコードされたコードを、componentname の内容も含めて紹介しています。PHP チュートリアルに興味のある友人の参考になれば幸いです。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート