この記事では、JSのAjaxの文字化けコードの問題を解決するエスケープ機能について説明し、参照のためにあなたと共有されています。特定の方法は次のとおりです。
1。問題の説明:
もともと、ISO-8859-1文字セットに従って、中国語でコード化されたWebページの特殊効果URLのEscape()。このようにして、リクエストパラメーターはrequest.getParameter()を介して直接取得できますが、後にjavaScriptはESACE()をUnicode文字セットエンコードに置き換えました。このように、要求パラメーターはJSPチュートリアルとサーブレットで直接取得することはできません。特定の理由はわかりません。
2。解決策:
1.最初に、漢字を2回エンコードします。パラメーター名を渡したい場合、値は「hello」である場合、URLの形式は.... name = escase(escase( "hello"))です。このようにして、エンコードされたパラメーターはrequest.getParameter()で取得できます。
2.取得したパラメーターは%25U4F60%25U597Dの形式であるため、通常のurldecoder.decode()を使用してデコードすることは不可能です。幸いなことに、この世界には十分な人々がいます。 JavaScriptにEscase()およびUnescape() - スタイルコーデックを実装できるツールクラスをインターネット上で直接見つけました。
次のようにコードをコピーします:<スクリプト言語= "javascript">
function get(id){return document.getElementById(id).value}
関数設定()
{
var xmlhttp;
if(window.activexobject)
{
xmlhttp = new ActiveXObject( "microsoft.xmlhttp")
}それ以外{
xmlhttp = new xmlhttprequest();
}
xmlhttp.onreadystatechange = function()
{
if(xmlhttp.ReadyState == 4)
{
if(xmlhttp.status == 200)
{
アラート(「成功!」)
}それ以外{
アラート(xmlhttp.status)
}
}
}
var url = "action.asp tutorial?action = sited&rnd ="+math.random()
xmlhttp.open( "post"、url、true)
var senddate = "title ="+escase(get( "title"))+"&conn_way ="+escase(get( "conn_way"))+"&databasename ="+escape( "databasename")+"&sqlusername ="+escape(get( "sqlusername")+"&sqlspassword ="+"+" ape(get( "sqlpassword"))+"&sqllllocalname ="+escase( "sqlllocalname"))+"&pg_size ="+escase( "pg_size")+"&adminid ="+escage(get( "adminid"))+"
2727 xmlhttp.setRequestheader( 'content-type'、 'application/x-www-form-urlencoded');
xmlhttp.send(senddate)
}
</script>
上記の例では、中国語のエスケープ機能のみを使用し、構文は次のとおりです。
定義と使用法:
Escape()関数は文字列をエンコードして、すべてのコンピューターで文字列を読み取ることができます。
文法:
Escape(string)パラメーターの説明
文字列が必要です。脱出またはエンコードされる文字列。
返品値:
エンコードされた文字列のコピー。これらの文字の一部は、16進エスケープシーケンスに置き換えられます。
説明:
この方法では、ASCIIの文字や数字をエンコードせず、次のASCII句読点をエンコードしません。 -_。 ! 〜 * '()。他のすべての文字は、逃げられたシーケンスに置き換えられます。
ヒントとコメント:
ヒント:unescape()を使用して、エスケープ()エンコードされた文字列をデコードできます。
注:ecmascript v3はこの方法の使用に反対し、アプリケーションはそれの代わりにdecodeuri()とdecodeuricomponent()を使用します
この記事がみんなのJavaScriptプログラミングに役立つことを願っています。