サーブレットリダイレクト時のurl中国語パラメータの乱符号化問題の解決
874 ワード
に質問
最近、開発中にサーブレットで
ソリューション
urlパラメータに中国語文字が含まれている場合は、一般的にサービス側で符号化処理を行う必要があります.そうしないと、乱符号化の問題が発生します.したがって,中国語文字を含むパラメータを符号化してurlにつなぎ合わせてジャンプするだけでよい.
私が
最近、開発中にサーブレットで
response.sendRedirect(url)
を使用してページリダイレクトを行う場合、urlに中国語のパラメータが含まれているため、ジャンプ時にurlが文字化けしてページにアクセスできないという問題が発生しました.ソリューション
urlパラメータに中国語文字が含まれている場合は、一般的にサービス側で符号化処理を行う必要があります.そうしないと、乱符号化の問題が発生します.したがって,中国語文字を含むパラメータを符号化してurlにつなぎ合わせてジャンプするだけでよい.
//
String systemCode=URLEncoder.encode(systemCode,"UTF-8");
String configCode=URLEncoder.encode(configCode,"UTF-8");
String name=URLEncoder.encode(name,"UTF-8");
//
String path=systemCode+"/"+configCode+"/"+name;
response.sendRedirect("http://localhost:8080/pdf/show?file="+path);
私が
UTF-8
フォーマットを使用して符号化していることがわかります.このような利点の一つは、クライアントで復号する必要がなく、中国語のパラメータはjs方法で直接取得することができ、乱符号化が発生しないことです.他の形式で符号化する場合、クライアントではjs呼び出しdecodeURI
、decodeURIComponent
などの方法で復号すればよい.