一、出現亂碼的原因
由於瀏覽器默認使用UTF-8碼表進行編碼,而servlet使用ISO-8859-1碼表進行編碼,傳輸和接收方編碼不一致導致亂碼的產生。
二、亂碼的類型以及解決辦法
1、 response亂碼
一、出現亂碼的原因
由於瀏覽器默認使用UTF-8碼表進行編碼,而servlet使用ISO-8859-1碼表進行編碼,傳輸和接收方編碼不一致導致亂碼的產生。
二、亂碼的類型以及解決辦法
1、 response亂碼
response.setHeader("content-type", "text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
第一句目的是為了指定瀏覽器以UTF-8碼表打開服務器發出的數據
第二句目的是設置response使用的碼表,控制response以UTF-8碼表向瀏覽器寫入數據(必須寫在方法中第一行)
或者:
OutputStream out=response.getOutputStream();
out.write("<metahttp-equiv='content-type' content='text/html;charset=UTF-8'>".getBytes());
通過字節流向瀏覽器寫入meta標簽控制瀏覽器使用的碼表
2、 request亂碼
request請求分為post和get,分別有不同的方法解決
①post請求亂碼
request.setCharacterEncoding("UTF-8");
String username=request.getParameter("username");
username=new String(username.getBytes("iso8859-1"),"UTF-8");
字節流從表單中提取的參數先用iso8859-1解析,再使用UTF-8碼表轉化寫入。
或:如果是通過超鏈接傳遞參數,超鏈接是get提交,必須手工修改編碼
3、 瀏覽器顯示亂碼
第一種:
response.setContentType("text/html;charset=UTF-8");
第二種:
response.setCharacterEncoding("UTF-8");
response.setHeader("content-type", "text/html;charset=UTF-8");
