ホームページ  >  記事  >  ウェブフロントエンド  >  JSがActionに中国語パラメータを渡すと文字化けする問題とその解決方法を共有します

JSがActionに中国語パラメータを渡すと文字化けする問題とその解決方法を共有します

零下一度
零下一度オリジナル
2017-04-27 14:55:251722ブラウズ

アクションは、プロジェクト全体で UTF-8 エンコーディング形式を使用している限り、中国語のパラメーターを取得します。ただし、JSP で JS が使用され、中国語のパラメーターが JS からアクションに渡される場合は、コード化けの問題は発生しません。

プロジェクトに取り組んでいるときに、プロジェクト全体で UTF-8 エンコード形式を使用している限り、Action が中国語のパラメーターを取得することがわかりました。ただし、JS は JSP で使用されており、中国語のパラメータは JS から Action に渡されます。中国語では混乱が生じます。百度に何度か問い合わせてみたところ、いろいろな意見がありました。
実践の結果、以下の方法で中国語の文字化けの問題を解決できることが分かりました。
JSPのJSの場合: 中国語パラメータはencodeURI(encodeURI(中国語パラメータ))を使用しており、これを2回トランスコードします。例:

function show(next,id,realName){ 
document.forms['f2'].action="usersearchNextPage?next="+next+"&id="+id+"&realName="+encodeURI(encodeURI(realName)); 
document.forms['f2'].submit(); 
}

ここで、realName は中国語のパラメータです。したがって、送信された URL では、realName が 2 回トランスコードされます。 encodeURI(encodeURI(realName))
アクション: 中国語パラメータを受信したときにデコードします。使用: java.net.URLDecoder.decode(realName, "UTF-8");
例:

String realName = ServletActionContext.getRequest().getParameter("realName"); 
try { 
realName = java.net.URLDecoder.decode(realName,"UTF-8"); 
} catch (UnsupportedEncodingException e1) { 
e1.printStackTrace(); 
}
上記の処理の後、問題は解決されます。

以上がJSがActionに中国語パラメータを渡すと文字化けする問題とその解決方法を共有しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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