解决Servlet中文乱码问题
一、出現亂碼的原因
由于瀏覽器默認使用UTF-8碼表進行編碼,而servlet使用ISO-8859-1碼表進行編碼,傳輸和接收方編碼不一致導致亂碼的產生。
二、亂碼的類型以及解決辦法
1、 response亂碼
一、出現亂碼的原因
由于瀏覽器默認使用UTF-8碼表進行編碼,而servlet使用ISO-8859-1碼表進行編碼,傳輸和接收方編碼不一致導致亂碼的產生。
二、亂碼的類型以及解決辦法
1、 response亂碼
| 01 02 03 | response.setHeader("content-type", "text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); |
第一句目的是為了指定瀏覽器以UTF-8碼表打開服務器發出的數據
第二句目的是設置response使用的碼表,控制response以UTF-8碼表向瀏覽器寫入數據(必須寫在方法中第一行)
或者:
| 01 02 03 | OutputStream out=response.getOutputStream(); out.write("<metahttp-equiv='content-type' content='text/html;charset=UTF-8'>".getBytes()); |
通過字節流向瀏覽器寫入meta標簽控制瀏覽器使用的碼表
2、 request亂碼
request請求分為post和get,分別有不同的方法解決
①post請求亂碼
| 01 | request.setCharacterEncoding("UTF-8"); |
| 01 02 03 | String username=request.getParameter("username"); username=new String(username.getBytes("iso8859-1"),"UTF-8"); |
字節流從表單中提取的參數先用iso8859-1解析,再使用UTF-8碼表轉化寫入。
或:如果是通過超鏈接傳遞參數,超鏈接是get提交,必須手工修改編碼
3、 瀏覽器顯示亂碼
第一種:
| 01 | response.setContentType("text/html;charset=UTF-8"); |
第二種:
| 01 02 03 | response.setCharacterEncoding("UTF-8"); response.setHeader("content-type", "text/html;charset=UTF-8"); |
總結
以上是生活随笔為你收集整理的解决Servlet中文乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios 状态栏设置
- 下一篇: 蓝牙4.0 BLE 防丢器