1.Post請求
表單提交用的大多是post方法,如果接收到的數據出現亂碼,在其提交前加上編碼格式,即request.setCharacterEncoding("utf-8")方法;
2.get請求
該方式請求是將數據提交到地址欄上,此時如設置上述方法是不起作用的,原因就在于服務器默認的編碼格式為ISO8859-1,如解決亂碼問題,可用方法一:設置服務器編碼格式為UTF-8,在tomcat中<Connector>設置,但此方法不太好,畢竟服務器的變動不是小事;方法二,設置URL編碼格式,使用URLEncoder.encode(URL,"UTF-8");方法三,將字符串通過ISO8859-1進行解碼,得到字節數組,然后數組使用UTF-8進行編碼,得到的數據就不會出現亂碼;
3.例子
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//獲取域對象中的值
String name = (String) req.getAttribute("NAME");
String id = (String) req.getAttribute("ID");
//轉碼,服務器默認使用ISO8859-1,將其轉換成UTF-8
String name1 = new String(name.getBytes("ISO8859-1"),"UTF-8");
String id1 = new String(id.getBytes("ISO8859-1"),"UTF-8");
//在瀏覽器輸出值
resp.setContentType("text/html;charset=UTF-8");
PrintWriter writer = resp.getWriter();
writer.write("姓名:" + name1 + "<br>");
writer.write("編號:" + id1);
}