使用OutputStream輸出中文的時候,如果編碼不設置就會產生亂碼,產生亂碼的原因有以下幾種:
Tomcat服務器默認的編碼為ISO-8859-1,不支持中文,應當告訴瀏覽器和服務器,使用UTF-8編碼。
服務端,瀏覽器端2邊的編碼不一致,比如服務器用utf-8,瀏覽器用gb2312,也會產生亂碼。
解決方法:
public void outputChineseByOutputStream(HttpServletResponse response) throws IOException{
String data = “解決”;
OutputStream outputStream = response.getOutputStream();//獲取OutputStream輸出流
response.setHeader(“content-type”, “text/html;charset=UTF-8”);//通過設置響應頭控制瀏覽器以UTF-8的編碼顯示數據,如果不加這句話,那么瀏覽器顯示的將是亂碼
//getBytes()方法如果不帶參數,那么就會根據操作系統的語言環境來選擇轉換碼表,如果是中文操作系統,那么就使用GB2312的碼表
byte[] dataByteArr = data.getBytes(“UTF-8”);//將字符轉換成字節數組,指定以UTF-8編碼進行轉換
outputStream.write(dataByteArr);//使用OutputStream流向客戶端輸出字節數組
}
response.setHeader(“content-type”, “text/html;charset=UTF-8”) 通過設置響應頭控制瀏覽器以UTF-8的編碼顯示數據
使用OutputStream流向客戶端瀏覽器輸出中文,以UTF-8的編碼進行輸出,此時就要控制客戶端瀏覽器以UTF-8的編碼打開,否則顯示的時候就會出現中文亂碼。
回答所涉及的環境:聯想天逸510S、Windows 10。
使用OutputStream輸出中文的時候,如果編碼不設置就會產生亂碼,產生亂碼的原因有以下幾種:
Tomcat服務器默認的編碼為ISO-8859-1,不支持中文,應當告訴瀏覽器和服務器,使用UTF-8編碼。
服務端,瀏覽器端2邊的編碼不一致,比如服務器用utf-8,瀏覽器用gb2312,也會產生亂碼。
解決方法:
public void outputChineseByOutputStream(HttpServletResponse response) throws IOException{
String data = “解決”;
OutputStream outputStream = response.getOutputStream();//獲取OutputStream輸出流
response.setHeader(“content-type”, “text/html;charset=UTF-8”);//通過設置響應頭控制瀏覽器以UTF-8的編碼顯示數據,如果不加這句話,那么瀏覽器顯示的將是亂碼
//getBytes()方法如果不帶參數,那么就會根據操作系統的語言環境來選擇轉換碼表,如果是中文操作系統,那么就使用GB2312的碼表
byte[] dataByteArr = data.getBytes(“UTF-8”);//將字符轉換成字節數組,指定以UTF-8編碼進行轉換
outputStream.write(dataByteArr);//使用OutputStream流向客戶端輸出字節數組
}
response.setHeader(“content-type”, “text/html;charset=UTF-8”) 通過設置響應頭控制瀏覽器以UTF-8的編碼顯示數據
使用OutputStream流向客戶端瀏覽器輸出中文,以UTF-8的編碼進行輸出,此時就要控制客戶端瀏覽器以UTF-8的編碼打開,否則顯示的時候就會出現中文亂碼。
回答所涉及的環境:聯想天逸510S、Windows 10。