天天看點

Servlet的PrintWrite的中文亂碼

首先觀察如下代碼:

<pre name="code" class="java">public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	PrintWriter out = response.getWriter();
	out.print("檔案上傳成功!");
}
           

可惜浏覽器傳回的是??????!

原因:

1.當辦事器調用servlet時同時建立一個request和response對象,request用來存儲用戶端發送請求,response用來存儲辦事器傳回的資料;

2.當servlet拿着“檔案上傳成功”去查它的預設編碼表,sun公司顯然是查國外碼表,之後存儲在response裡,然後輸出;而浏覽器的編碼在中文的windows下一般是GBK;浏覽器拿到iso編碼的字元去查GBK的碼表,顯然就是亂碼。

解決:

那就修改response的編碼格式,代碼如下:

response.setCharacterEncoding("UTF-8");

此時浏覽器顯示的又是什麼呢?

Servlet的PrintWrite的中文亂碼

還是亂碼?

終極解決:修改浏覽器的預設編碼格式。

1.使用者手動修改(體驗度不高)

2.response.setHeader("Content-type","text/html;charset=UTF-8");//告訴浏覽器編碼格式;

最終顯示:

Servlet的PrintWrite的中文亂碼

繼續閱讀