サーブレットリダイレクト時のurl中国語パラメータの乱符号化問題の解決

874 ワード

に質問
最近、開発中にサーブレットで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呼び出しdecodeURIdecodeURIComponentなどの方法で復号すればよい.