表單中文為什么會出現(xiàn)亂碼
瀏覽器會對表單的中文參數(shù)進行編碼俊嗽,具體采用何種編碼方式要看改表單所在的頁面指定的編碼方式,服務(wù)器端默認的解碼方式:ios-8859-1不支持中文
亂碼的根源:編碼和解碼方式不一樣
解決方案
1、在html文件中添加消息頭設(shè)置,只適用于post方法
具體為:<meta charset="UTF-8"/>
作用:模擬消息頭,保證表單中的中文參數(shù)按照UTF-8的方式編碼。告訴瀏覽器讀到的是一個html文本煞躬,編碼格式是utf-8前提是只對post可行
注意:get請求提交時,中文亂碼解決:
修改 tomcat/conf/server.xml文件
在 <Connection>內(nèi)添加屬性:
URIEncoding=“UTF-8”
此方式不建議使用逸邦,因為要更改服務(wù)器
2恩沛、在服務(wù)器端:
對于post請求
使用Servlet讀取表單的請求參數(shù)時,使用
resquest.setCharacterEncoding(“UTF-8”)
讓服務(wù)器使用UTF-8的解碼方式解析表單中的數(shù)據(jù)
對于get請求的數(shù)據(jù)缕减,我們在相同的位置可以做如下處理
先獲取請求參數(shù)
String userNmae=resuqest.getParameter(“userName”);
獲得參數(shù)后雷客,將其改為UTF-8
userName=new String(userName.getBytes(“ios8859-1”),'''UTF -8');
如何中文輸出
response.setContentType("text/html;charset=utf-8");
必須在PrintWriter out = response.getWriter()之前調(diào)用才有效
作用1:指定out.println()使用utf-8格式編碼輸出
作用2:會生成一個消息頭:
content-type:text/html;charset=utf-8
告訴瀏覽器返回的數(shù)據(jù)類型是html,編碼是utf-8
建議:瀏覽器請求服務(wù)器時桥狡,盡量避免使用get方式提交中文參數(shù)