在URL去访问servlet时,url字符串会被编码成相应的字符集,比如下面代码
URL url=new URL("http://localhost:8080/TestWeb/URLServlet?name=中国");
那么在servlet端看来,这个"中国"两个汉字必须使用以上代码的调用端的系统默认字符集来解码,比如我的机器的默认字符集是GBK.那么Servlet端的tomcat的相应的connector的URIEncoding必须设置为GBK或者其兼容字符集.否则出现乱码.
当然,在上述代码中可以把中文用URLEncoder来按照相应的字符集编码.比如URLEncoder.encode("中国","UTF-8");那相应的tomcat端.比如把connector的URIEncoding属性设置为相应的字符集UTF-8.这样才不会出现乱码.
同理.在servlet端.使用contentType设置的字符集编码方式,和客户端的解码方式必须一致,不然中文会出现乱码现象.