因为在jsp中对中文进行了编码的时候用的是UTF-8的编码方式,而在servlet中调用request.getParameter();方法的时候使用服务器指定的编码格式自动解码一次,所以前台编码一次后台解码一次而解码和编码的方式不用所以造成了乱码的出现, 这就类似于以下代码:
String name = java.net.URLEncoder.encode( " 测试 " , " UTF-8 " ); System.out.println(name); System.out.println(java.net.URLDecoder.decode(name, " ISO-8859-1 " ));
编码后的是%E6%B5%8B%E8%AF%95。。 而用ISO-8859-1解码后的是???è?。。 但是如果调用的是
System.out.println(java.net.URLDecoder.decode(name, " UTF-8 " ));
String name = java.net.URLEncoder.encode( " 测试 " , " UTF-8 " ); System.out.println(name); name = java.net.URLEncoder.encode(name, " UTF-8 " ); System.out.println(name); name = java.net.URLDecoder.decode(name, " UTF-8 " ); System.out.println(name); System.out.println(java.net.URLDecoder.decode(name, " UTF-8 " ));