ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript でよくある問題の解決策 (文字化け、IE キャッシュ、プロキシ)_JavaScript スキル

JavaScript でよくある問題の解決策 (文字化け、IE キャッシュ、プロキシ)_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 17:11:561315ブラウズ

AJAX の中国語文字化けを解決するためによく使用される 2 つの方法

1. クライアント側で URI をエンコードし (デフォルトでは utf-8 を実行する必要はありません)、サーバー側で iso-8859-1 エンコードを utf-8 エンコードに変換します

2. クライアント側で URI を 2 回エンコードし、サーバー側で 1 回変換します。

2 番目の方法で問題が解決できる理由:

2 回の変換後、最初の getparameter メソッドで最初のデコードを実行します。解決策は英語であるため (最初のエンコード後の結果)、2 回目に URLDecoder デコード メソッドを使用すると、この問題は発生しません。普通に解ける。なお、デコードメソッドではデコード形式を「utf-8」に指定する必要があります。多くの中国のプラットフォームは utf-8 (gb2312 だと思います) を使用しないため、デコードのデフォルトの変換は必ずしも utf-8 であるとは限りません。

クライアントがサーバー上で 2 回エンコードされ、1 回だけデコードされるのは、Tomcat が原因です。プログラマーにとってプログラミングを便利にする (get と post で同じコードを使用する) ために、Tomcat は post のエンコーディングを自動的にデコードするため、サーバー側での手書きのデコード ステートメントが 1 つ減ります。エンコードとデコードを再度実行する必要があるのは、Tomcat の自動デコード操作が必ずしも希望のエンコードに従ってデコードされるわけではないためですが、英語やその他の文字のデコードされたコードはどのプラットフォームであっても同じであるためです。したがって、Tomcat は最初のエンコードの結果を自動的に解釈し、次に encodeURI コードを手動で 1 回解釈して、必要な形式を取得することができます。

追加: 今、ブラウザの動作を再度観察しましたが、ブラウザに表示される中国語はエンコードされたコンテンツではないので、これは Tomcat のせいではないと感じています。エンコードの問題で混乱しています。この知識を知っている友人がアドバイスをくれることを願っています。

IE キャッシュ問題の解決
タイムスタンプを追加して確認しますか?

代理店の問題を解決します
これをやりたいですか? $

に変換します

サンプルコード:

コードをコピー コードは次のとおりです。

function verify( ) {
//中国語文字化け問題を解決する方法 1。ページ側から送信されたデータは encodeURI としてエンコードされ、サーバー セグメントは new String(old.getBytes("iso8859-1"), "UTF" を使用します。 -8");
// 中国語文字化け問題を解決する方法2。ページ側から送信されるデータはencodeURIとして2重にエンコードされます。サーバーセグメントではURLDecoder.decode(old,"UTF-8 ")
var url = "AJAXServer?name=" encodeURI(encodeURI($ ("#userName").val()));
url = ConvertURL(url);
$.get(url ,null,function(data){
$("#result").html(data);
});
}
//URL アドレスにタイムスタンプを追加し、ブラウザを騙します
function ConvertURL(url) {
// タイムスタンプを取得します
var timstamp = (new Date()).valueOf();
// タイムスタンプ情報をurl
//url = "AJAXServer"
if (url.indexOf("?") >= 0) {
url = url "&t=" timstamp;
} else {
url = url "?t=" timstamp;
}
return url;
}
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。