首先觀察如下代碼:
<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");
此時浏覽器顯示的又是什麼呢?

還是亂碼?
終極解決:修改浏覽器的預設編碼格式。
1.使用者手動修改(體驗度不高)
2.response.setHeader("Content-type","text/html;charset=UTF-8");//告訴浏覽器編碼格式;
最終顯示: