中国語の文字化けし問題のまとめ
Web開発をして、文字化けしに出会うのはきっととても正常な事です
毎回文字化けしが発生するまで待ってから文字化けしを解決するのであれば、スタート段階で文字化けしの発生を防ぐために以下の準備をしておくとよいでしょう
もちろん開発の過程では、完全にはできないので、文字化けしの問題を避けることはできません.
一般的には、UTF-8の符号化方式であると仮定する.
1、フォームがPOSTで提出されるのは最も簡単で、例えばフォームに多くの中国語のパラメータ値が記入されている.
バックグラウンドプログラムからreqを通過する.getParameter(「パラメータ名」)が文字化けしている
ソリューション:パラメータを取得する前にrequestの符号化方法を設定します.
もちろん自分でフィルターFilterを書けば、手間が省けます.
2、URLによるGETリクエスト方式
要求経路には中国語が含まれている:http://localhost:8080/encode/中国語.jspまたはリクエストパラメータには中国語パラメータが含まれています:http://localhost:8080/encode/login.jsp?userName='枚3'
ソリューション1:tomcatのサービスを設定します.xmlファイルにtomcat復号方式URIEncodingパラメータを追加:
ソリューション2:(1)自分でjs内蔵関数encodeURIで中国語パラメータをトランスコードし、バックグラウンド処理に転送する:
(2)バックグラウンドを通る
シナリオ2は中国語を含むパスを処理できません.
毎回文字化けしが発生するまで待ってから文字化けしを解決するのであれば、スタート段階で文字化けしの発生を防ぐために以下の準備をしておくとよいでしょう
, , ;
;
URL ;
POST
もちろん開発の過程では、完全にはできないので、文字化けしの問題を避けることはできません.
一般的には、UTF-8の符号化方式であると仮定する.
1、フォームがPOSTで提出されるのは最も簡単で、例えばフォームに多くの中国語のパラメータ値が記入されている.
バックグラウンドプログラムからreqを通過する.getParameter(「パラメータ名」)が文字化けしている
ソリューション:パラメータを取得する前にrequestの符号化方法を設定します.
req.setCharacterEncoding("UTF-8");
String userName=req.getParameter("userName");
もちろん自分でフィルターFilterを書けば、手間が省けます.
2、URLによるGETリクエスト方式
要求経路には中国語が含まれている:http://localhost:8080/encode/中国語.jspまたはリクエストパラメータには中国語パラメータが含まれています:http://localhost:8080/encode/login.jsp?userName='枚3'
ソリューション1:tomcatのサービスを設定します.xmlファイルにtomcat復号方式URIEncodingパラメータを追加:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
ソリューション2:(1)自分でjs内蔵関数encodeURIで中国語パラメータをトランスコードし、バックグラウンド処理に転送する:
var userName=" ";
userName=encodeURI(encodeURI(userName));
var param="userName="+userName;
var url="http://localhost:8080/encode/login.jsp?"+param;
(2)バックグラウンドを通る
String userName=req.getParameter("userName");
userName=java.net.URLDecoder.decode(userName, "utf-8");
シナリオ2は中国語を含むパスを処理できません.