1 | <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/> |
1 2 | String encode = URLEncoder.encode(request.getParameter("name"),"ISO-8859-1"); String name = URLDecoder.decode(encode,"UTF-8"); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @Test public void test1()throws Exception { // 1,原始中文参数 String parameter = "中文"; System.out.println("原始中文参数:"+parameter); // 2,浏览器通过 UTF-8 进行 URLEncode String browerEncodeParameter = URLEncoder.encode(parameter, "UTF-8"); System.out.println("浏览器通过 UTF-8 进行 URLEncode 后的值:" +browerEncodeParameter); // 3,通过 ISO-8859-1 进行 URLDecode String serverDecodeParameter = URLDecoder.decode(browerEncodeParameter, "ISO-8859-1"); System.out.println("直接取出时通过 ISO-8859-1 进行 URLDecode 后得到的乱码:"+serverDecodeParameter); // 4,手动通过 ISO-8859-1 对乱码进行 URLEncode String codeEncodeParameter = URLEncoder.encode(serverDecodeParameter,"ISO-8859-1"); System.out.println("手动对乱码通过 ISO-8859-1 进行 URLEncode 得到的浏览器原始提交的值:"+codeEncodeParameter); // 5,手动通过 UTF-8 对步骤4得到的值进行 URLDecode 后得到正确中文参数 String codeDecodeParameter = URLDecoder.decode(codeEncodeParameter,"UTF-8"); System.out.println("手动通过 UTF-8 进行 URLDecode 后得到的正确中文参数:"+codeDecodeParameter); } |
1 2 3 4 5 | 原始中文参数: 中文 浏览器通过 UTF-8 进行 URLEncode 后的值: %E4%B8%AD%E6%96%87 直接取出时通过 ISO-8859-1 进行 URLDecode 后得到的乱码: 䏿 手动对乱码通过 ISO-8859-1 进行 URLEncode 得到的浏览器原始提交的值: %E4%B8%AD%E6%96%87 手动通过 UTF-8 进行 URLDecode 后得到的正确中文参数: 中文 |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |