java Web开发中,request.getParameter()获取URL中文参数会发生乱码
原因:Http请求传输时将url以ISO-8859-1编码,服务器收到字节流后默认会以ISO-8859-1编码来解码成字符流(造成中文乱码)
解决办法:我们需要把request.getParameter(“参数名”)获取到的字符串先用ISO-8859-1编码成字节流,然后再将其用utf-8解码成字符流 (该方法已经过测试可行)
String str = new String(request.getParameter("参数名").getBytes("iso-8859-1"), "utf-8");
通过以上代码,现在得到的str为中文字符串;若java web要以“urf-8”编码请求其他服务器,则可以
String urf8str = URLEncoder.encode(str,"utf-8");
我们也可以通过Tomcat配置文件,设置URL编码集(URIEncoding)设置编码,这种方法也是一劳永逸的,
修改Tomcat/conf 目录下 server.xml (本方法未测试待测)
useBodyEncodingForURI参数表示是否用request.setCharacterEncoding参数对URL提交的数据和表单中GET方式提交的数据进行重新编码,在默认情况下,该参数为false。
URIEncoding参数指定对所有GET方式请求进行统一的重新编码(解码)的编码。
参考链接: