servlet response 中文亂碼

先,response返回有兩種,一種是字節流outputstream,一種是字符流printwrite。html

申明:這裏爲了方便起見,全部輸出都統一用UTF-8編碼。java

先說字節流,要輸出「中國",給輸出流的必須是轉換爲utf-8的「中國」,還要告訴瀏覽器,用utf8來解析數據瀏覽器

//這句話的意思,是讓瀏覽器用utf8來解析返回的數據
        response.setHeader("Content-type", "text/html;charset=UTF-8");
        String data = "中國";
        OutputStream ps = response.getOutputStream();
        //這句話的意思,使得放入流的數據是utf8格式
        ps.write(data.getBytes("UTF-8"));

  再說字符流,要輸出中國,須要設置response.setCharacterEncoding("UTF-8");編碼

               //這句話的意思,是讓瀏覽器用utf8來解析返回的數據
		response.setHeader("Content-type", "text/html;charset=UTF-8");
		//這句話的意思,是告訴servlet用UTF-8轉碼,而不是用默認的ISO8859
		response.setCharacterEncoding("UTF-8");
		String data = "中國";
		PrintWriter pw = response.getWriter();
		pw.write(data);

  

經驗:1,若是中文返回出現??字符,這代表沒有加response.setCharacterEncoding("UTF-8");這句話。.net

            2,若是返回的中文是「烇湫」這種亂碼,說明瀏覽器的解析問題,應該檢查下是否忘加response.setHeader("Content-type", "text/html;charset=UTF-8");這句話。htm

 若是上面都解決不了,請看更詳細的說明blog

http://blog.csdn.NET/kontrol/article/details/7767983utf-8

相關文章
相關標籤/搜索