日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

012_HttpServletResponse响应乱码

發布時間:2025/4/17 编程问答 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 012_HttpServletResponse响应乱码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. HttpServletResponse響應亂碼處理

1. 新建一個ResponseLuanMa的Web工程

2. 使用meta設置網頁編碼為GB2312

2.1. 新建一個GWMetaGB2312.java類, 使用字符流響應客戶端

2.2. 編寫GWMetaGB2312.java

package com.lywgames.myservlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class GWMetaGB2312 extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {StringBuilder sb = new StringBuilder();sb.append("<!DOCTYPE html>").append("\r\n");sb.append("<html>").append("\r\n");sb.append("<head>").append("\r\n");// 設置網頁編碼為GB2312sb.append("<meta charset='GB2312' />").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 字符流響應客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

2.3. 編寫web.xml

2.4. 部署運行, 網頁的中文顯示亂碼

2.5. 查看網頁編碼是GB2312, 就是我們在meta中設置的編碼

3. 使用meta設置網頁編碼為UTF-8

3.1. 新建一個GWMetaUTF8.java類, 使用字符流響應客戶端

3.2. 編寫GWMetaUTF8.java類

package com.lywgames.myservlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class GWMetaUTF8 extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {StringBuilder sb = new StringBuilder();sb.append("<!DOCTYPE html>").append("\r\n");sb.append("<html>").append("\r\n");sb.append("<head>").append("\r\n");// 設置網頁編碼為UTF-8sb.append("<meta charset='UTF-8' />").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 字符流響應客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

3.3. 編寫web.xml

3.4. 部署運行, 網頁的中文顯示亂碼

3.5. 查看網頁編碼是UTF-8, 就是我們在meta中設置的編碼

4. 使用HttpServletResponse的setCharacterEncoding設置字符編碼GB2312

4.1. 新建一個GWSetCharacterEncodingGB2312.java類, 使用字符流響應客戶端

4.2. 編寫GWSetCharacterEncodingGB2312.java類

package com.lywgames.myservlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class GWSetCharacterEncodingGB2312 extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {StringBuilder sb = new StringBuilder();sb.append("<!DOCTYPE html>").append("\r\n");sb.append("<html>").append("\r\n");sb.append("<head>").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應給客戶端的字符編碼GB2312resp.setCharacterEncoding("GB2312");// 字符流響應客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

4.3. 編寫web.xml

4.4. 部署運行, 網頁的中文顯示正常

4.5. 查看網頁編碼是GB2312, 但是我們并沒有設置網頁編碼

5. 使用HttpServletResponse的setCharacterEncoding設置字符編碼UTF-8

5.1. 新建一個GWSetCharacterEncodingUTF8.java類, 使用字符流響應客戶端

5.2. 編寫GWSetCharacterEncodingUTF8.java類

package com.lywgames.myservlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class GWSetCharacterEncodingUTF8 extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {StringBuilder sb = new StringBuilder();sb.append("<!DOCTYPE html>").append("\r\n");sb.append("<html>").append("\r\n");sb.append("<head>").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應給客戶端的字符編碼UTF-8resp.setCharacterEncoding("UTF-8");// 字符流響應客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

5.3. 編寫web.xml

5.4. 部署運行, 網頁的中文顯示亂碼

5.5. 查看網頁編碼是GB2312, 但是我們并沒有設置網頁編碼

5.6. 這是我們在瀏覽器中手動設置編碼為UTF-8, 網頁的中文顯示正常

5.7. 或者, 我們在meta中設置網頁編碼為UTF-8

5.8. 我們在meta中設置網頁編碼為UTF-8, 重新訪問, 網頁中文顯示正常, 網頁編碼顯示為UTF-8, 其中我們并沒有手動在瀏覽器中設置網頁編碼。

5.9. 從上面的例子中我們大概知道, 要想響應的中文數據在瀏覽器中顯示正常, 需要設置網頁編碼和字符編碼統一為GB2312或者UTF-8, 推薦使用UTF-8。

6.使用HttpServletResponse的setHeader("Content-Type", "text/html; charset=GB2312"), 響應客戶端的內容類型是text/html 編碼是GB2312(包含字符編碼和網頁編碼)。

6.1. 新建一個GWSetHeaderGB2312.java類, 使用字符流響應客戶端

6.2. 編寫GWSetHeaderGB2312.java類

package com.lywgames.myservlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class GWSetHeaderGB2312 extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {StringBuilder sb = new StringBuilder();sb.append("<!DOCTYPE html>").append("\r\n");sb.append("<html>").append("\r\n");sb.append("<head>").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應客戶端的內容類型是text/html 編碼是GB2312(包含字符編碼和網頁編碼)resp.setHeader("Content-Type", "text/html; charset=GB2312");// 字符流響應客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

6.3. 編寫web.xml

6.4. 部署運行, 網頁的中文顯示正常

7. 使用HttpServletResponse的setHeader("Content-Type", "text/html; charset=UTF8"), 響應客戶端的內容類型是text/html 編碼是UTF8(包含字符編碼和網頁編碼)。

7.1. 新建一個GWSetHeaderUTF8.java類, 使用字符流響應客戶端

7.2. 編寫GWSetHeaderUTF8.java類

package com.lywgames.myservlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class GWSetHeaderUTF8 extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {StringBuilder sb = new StringBuilder();sb.append("<!DOCTYPE html>").append("\r\n");sb.append("<html>").append("\r\n");sb.append("<head>").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應客戶端的內容類型是text/html 編碼是UTF-8(包含字符編碼和網頁編碼)resp.setHeader("Content-Type", "text/html; charset=UTF-8");// 字符流響應客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

7.3. 編寫web.xml

7.4. 部署運行, 網頁的中文顯示正常

8. 用HttpServletResponse的setContentType("text/html;charset=GB2312")

, 響應客戶端的內容類型是text/html 編碼是GB2312(包含字符編碼和網頁編碼)。推薦使用setContentType方法。

8.1. 新建一個GWSetContentTypeGB2312.java類, 使用字符流響應客戶端

8.2. 編寫GWSetContentTypeGB2312.java類

package com.lywgames.myservlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class GWSetContentTypeGB2312 extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {StringBuilder sb = new StringBuilder();sb.append("<!DOCTYPE html>").append("\r\n");sb.append("<html>").append("\r\n");sb.append("<head>").append("\r\n");// 網頁編碼GB2312sb.append("<meta charset='GB2312' />").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應客戶端的內容類型是text/html 編碼是GB2312(包含字符編碼和網頁編碼)resp.setContentType("text/html;charset=GB2312");// 字符流響應客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

8.3. 編寫web.xml

8.4. 部署運行, 網頁的中文顯示正常

9. 用HttpServletResponse的setContentType("text/html;charset=UTF8"), 響應客戶端的內容類型是text/html 編碼是UTF8(包含字符編碼和網頁編碼)。

9.1. 新建一個GWSetContentTypeUTF8.java類, 使用字符流響應客戶端

9.2. 編寫GWSetContentTypeUTF8.java類

package com.lywgames.myservlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class GWSetContentTypeUTF8 extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {StringBuilder sb = new StringBuilder();sb.append("<!DOCTYPE html>").append("\r\n");sb.append("<html>").append("\r\n");sb.append("<head>").append("\r\n");// 網頁編碼UTF-8sb.append("<meta charset='UTF-8' />").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應客戶端的內容類型是text/html 編碼是UTF-8(包含字符編碼和網頁編碼)resp.setContentType("text/html;charset=UTF-8");// 字符流響應客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

9.3. 編寫web.xml

9.4. 部署運行, 網頁的中文顯示正常

10. 使用字節流響應數據, 字節流默認字符編碼是UTF-8

10.1. 新建類GetOutputStreamLuanMa.java

10.2. 編寫GetOutputStreamLuanMa.java

package com.lywgames.myservlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class GetOutputStreamLuanMa extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {StringBuilder sb = new StringBuilder();sb.append("<!DOCTYPE html>").append("\r\n");sb.append("<html>").append("\r\n");sb.append("<head>").append("\r\n");sb.append("<meta charset='UTF-8' />").append("\r\n");sb.append("<title>HttpServletResponse 字節流相應中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字節流相應中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 字節流, 默認字符編碼是UTF-8resp.getOutputStream().write(sb.toString().getBytes());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

10.3. 編寫web.xml

10.4. 部署運行

11. 不管是字節流還是字符流, 直接使用一行代碼就可以解決響應亂碼問題。

response.setContentType("text/html;charset=UTF-8");

注: 我們最好使用<meta charset='UTF-8'?/>設置網頁編碼, 都設置為UTF-8編碼。

總結

以上是生活随笔為你收集整理的012_HttpServletResponse响应乱码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。