# Servlet中文亂碼處理
### 發生中文亂碼的原因

### 發生中文亂碼的各種情況
#### 1、表單form
##### (1)post
???在服務器端設置成瀏覽器端的編碼方式。
解決方法:??request.setCharacterEncoding("utf-8");?//gbk?gb2312?big5
##### (2)get
寫一個工具類:
~~~
package com.pc.utils;
public class MyTools {
public static String getNewString(String str) {
String newString="";
try {
// 把iso-8859-1 轉換成 utf-8
newString=new String(str.getBytes("iso-8859-1"),"utf-8");
} catch (Exception e) {
e.printStackTrace();
}
return newString;
}
}
~~~
#### 2、超鏈接
????<a?href=”http://www.sohu.com?name=函數后”>測試</a>
PS:該方法和get處理方法一樣
?
#### 3?、sendRedirect()?發生亂碼
response.sendRedirect(“servlet地址?username=張三”);?
PS:重定向默認是get方法,所以處理方法參照get。
重定向產生亂碼的原因:
????重定向的原理是Web服務器告知瀏覽器,要瀏覽器訪問另一個地址,這樣HttpServletResponse和HttpServletRequest對象都是不同的了,所以需要到跳轉的地址再次設置才行。
?
#### 4、返回瀏覽器顯示亂碼?
在服務端是中文,在response的時候,也要考慮瀏覽器顯示是否正確,一般通過使用:
response.setContentType(“text/html;charset=utf-8”);
?
#### 5、下載提示框中文亂碼
下載文件的時候,可能提示框是中文亂碼?
String?temp=java.net.URLEncoder.encode("演員.mp3","utf-8");
response.setHeader("Content-Disposition","attachment;?filename="+temp);
?
PS:應當盡量使用post?方式提交,因為post方式提交處理該問題簡單,而get方式就有點麻煩了。
?
----------參考《韓順平.細說Servlet》