ホームページ  >  記事  >  ウェブフロントエンド  >  JSのencodeURI(url)の文字化けを回避するにはどうすればよいですか?

JSのencodeURI(url)の文字化けを回避するにはどうすればよいですか?

php中世界最好的语言
php中世界最好的语言オリジナル
2018-03-09 10:52:422637ブラウズ

今回はJSでURI(url)を文字化けせずにエンコードする方法を紹介します。 , JS で encodeURI(url) を使用するときの注意事項は何ですか。以下は実際的なケースです。見てみましょう。

通常は encodeURIComponent(parmeName)+"="+encodeURIComponent(parmeValue);
受信時は直接 String paramValue = request.getParameter(paramName) // コンテナは自動的にデコードします。

encodeURIComponent がUTF-8 エンコード規則に従ってコンパイルされます。
コンテナーも request.getParameter(paramName) に従って UTF-8 を解釈する場合、正しいです。 2 番目の encodeURIComponent(...) を実行する必要はありません。クライアント

コンテナが UTF-8 に従って request.getParameter(paramName) をデコードしない場合、結果は 1 つだけ、つまり文字化けしたコードになります
コンテナがデコードするために使用するエンコーディングは request.setCharacterEncoding(* に依存します) **) またはサーバー プログラム構成。

JSP プログラムを使用している場合は、request.setCharacterEncoding("UTF-8") を使用して、コンテナーが送信されたパラメーターをデコードするときに UTF-8 を使用するようにサーバー構成を変更できます。 GET.

クライアント送信前に二次エンコードは必要なく、受信時に request.getParameter(paramName) を直接実行するだけです

なぜインターネット上の一部の人々は、クライアント側で string を 2 回エンコードすることを提案するのでしょうか。コンテナが使用するエンコード ルールをプロジェクトで指定するために必要です。たとえば、エンコードされていないパラメータ コンテンツを別のページから受信する必要がある場合など、送信されたパラメータをデコードするために必要です。 (あるいは、開発者がこのやや複雑なことで混乱しており、パラメータを受け取る作業を正しく実行する方法がわからないのかもしれません)
現時点では、クライアント上のパラメータの二次エンコードによって、「マルチバイト文字のコミット」という難しい問題を効果的に回避できます。 」。
最初のエンコーディングにより、パラメーターの内容にはマルチバイト文字が含まれず、純粋な Ascii 文字列になります。 (ここでは、最初のコンパイル結果を [STR_ENC1] と呼びます。 [STR_ENC1] にはマルチバイト文字は含まれません)
再度コンパイルした後、サブミットすると、コンテナが受信時に一度自動的にデコードします (コンテナは自動的にそれをデコードします)これを一度デコードすれば、GBK、UTF-8、ISO-8859-1のどれを押しても[STR_ENC1]が正しく取得できます)
その後、プログラム内でdecodeURIComponentを再度実装します(java.net.URLDecoder(*は通常Javaで使用されます) **, "UTF-8")) を使用して、送信するパラメータの元の値を取得します。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイト

その他の関連記事に注目してください。

関連書籍:

CSS の Clearfix の原理の簡単な紹介

CSS1 と CSS2 の共通プロパティ

CSS3 を使用してログイン ボックスを作成する方法

以上がJSのencodeURI(url)の文字化けを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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