在URL去訪問servlet時(shí),url字符串會(huì)被編碼成相應(yīng)的字符集,比如下面代碼
URL url=new URL("http://localhost:8080/TestWeb/URLServlet?name=中國");
那么在servlet端看來,這個(gè)"中國"兩個(gè)漢字必須使用以上代碼的調(diào)用端的系統(tǒng)默認(rèn)字符集來解碼,比如我的機(jī)器的默認(rèn)字符集是GBK.那么Servlet端的tomcat的相應(yīng)的connector的URIEncoding必須設(shè)置為GBK或者其兼容字符集.否則出現(xiàn)亂碼.
當(dāng)然,在上述代碼中可以把中文用URLEncoder來按照相應(yīng)的字符集編碼.比如URLEncoder.encode("中國","UTF-8");那相應(yīng)的tomcat端.比如把connector的URIEncoding屬性設(shè)置為相應(yīng)的字符集UTF-8.這樣才不會(huì)出現(xiàn)亂碼.
同理.在servlet端.使用contentType設(shè)置的字符集編碼方式,和客戶端的解碼方式必須一致,不然中文會(huì)出現(xiàn)亂碼現(xiàn)象.