日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

012_HttpServletResponse响应乱码

發(fā)布時(shí)間:2025/4/17 80 豆豆
生活随笔 收集整理的這篇文章主要介紹了 012_HttpServletResponse响应乱码 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一. HttpServletResponse響應(yīng)亂碼處理

1. 新建一個(gè)ResponseLuanMa的Web工程

2. 使用meta設(shè)置網(wǎng)頁(yè)編碼為GB2312

2.1. 新建一個(gè)GWMetaGB2312.java類, 使用字符流響應(yīng)客戶端

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");// 設(shè)置網(wǎng)頁(yè)編碼為GB2312sb.append("<meta charset='GB2312' />").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應(yīng)中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應(yīng)中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 字符流響應(yīng)客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

2.3. 編寫web.xml

2.4. 部署運(yùn)行, 網(wǎng)頁(yè)的中文顯示亂碼

2.5. 查看網(wǎng)頁(yè)編碼是GB2312, 就是我們?cè)趍eta中設(shè)置的編碼

3. 使用meta設(shè)置網(wǎng)頁(yè)編碼為UTF-8

3.1. 新建一個(gè)GWMetaUTF8.java類, 使用字符流響應(yīng)客戶端

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");// 設(shè)置網(wǎng)頁(yè)編碼為UTF-8sb.append("<meta charset='UTF-8' />").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應(yīng)中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應(yīng)中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 字符流響應(yīng)客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

3.3. 編寫web.xml

3.4. 部署運(yùn)行, 網(wǎng)頁(yè)的中文顯示亂碼

3.5. 查看網(wǎng)頁(yè)編碼是UTF-8, 就是我們?cè)趍eta中設(shè)置的編碼

4. 使用HttpServletResponse的setCharacterEncoding設(shè)置字符編碼GB2312

4.1. 新建一個(gè)GWSetCharacterEncodingGB2312.java類, 使用字符流響應(yīng)客戶端

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 字符流相應(yīng)中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應(yīng)中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應(yīng)給客戶端的字符編碼GB2312resp.setCharacterEncoding("GB2312");// 字符流響應(yīng)客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

4.3. 編寫web.xml

4.4. 部署運(yùn)行, 網(wǎng)頁(yè)的中文顯示正常

4.5. 查看網(wǎng)頁(yè)編碼是GB2312, 但是我們并沒(méi)有設(shè)置網(wǎng)頁(yè)編碼

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

5.1. 新建一個(gè)GWSetCharacterEncodingUTF8.java類, 使用字符流響應(yīng)客戶端

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 字符流相應(yīng)中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應(yīng)中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應(yīng)給客戶端的字符編碼UTF-8resp.setCharacterEncoding("UTF-8");// 字符流響應(yīng)客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

5.3. 編寫web.xml

5.4. 部署運(yùn)行, 網(wǎng)頁(yè)的中文顯示亂碼

5.5. 查看網(wǎng)頁(yè)編碼是GB2312, 但是我們并沒(méi)有設(shè)置網(wǎng)頁(yè)編碼

5.6. 這是我們?cè)跒g覽器中手動(dòng)設(shè)置編碼為UTF-8, 網(wǎng)頁(yè)的中文顯示正常

5.7. 或者, 我們?cè)趍eta中設(shè)置網(wǎng)頁(yè)編碼為UTF-8

5.8. 我們?cè)趍eta中設(shè)置網(wǎng)頁(yè)編碼為UTF-8, 重新訪問(wèn), 網(wǎng)頁(yè)中文顯示正常, 網(wǎng)頁(yè)編碼顯示為UTF-8, 其中我們并沒(méi)有手動(dòng)在瀏覽器中設(shè)置網(wǎng)頁(yè)編碼。

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

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

6.1. 新建一個(gè)GWSetHeaderGB2312.java類, 使用字符流響應(yīng)客戶端

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 字符流相應(yīng)中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應(yīng)中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應(yīng)客戶端的內(nèi)容類型是text/html 編碼是GB2312(包含字符編碼和網(wǎng)頁(yè)編碼)resp.setHeader("Content-Type", "text/html; charset=GB2312");// 字符流響應(yīng)客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

6.3. 編寫web.xml

6.4. 部署運(yùn)行, 網(wǎng)頁(yè)的中文顯示正常

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

7.1. 新建一個(gè)GWSetHeaderUTF8.java類, 使用字符流響應(yīng)客戶端

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 字符流相應(yīng)中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應(yīng)中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應(yīng)客戶端的內(nèi)容類型是text/html 編碼是UTF-8(包含字符編碼和網(wǎng)頁(yè)編碼)resp.setHeader("Content-Type", "text/html; charset=UTF-8");// 字符流響應(yīng)客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

7.3. 編寫web.xml

7.4. 部署運(yùn)行, 網(wǎng)頁(yè)的中文顯示正常

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

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

8.1. 新建一個(gè)GWSetContentTypeGB2312.java類, 使用字符流響應(yīng)客戶端

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");// 網(wǎng)頁(yè)編碼GB2312sb.append("<meta charset='GB2312' />").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應(yīng)中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應(yīng)中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應(yīng)客戶端的內(nèi)容類型是text/html 編碼是GB2312(包含字符編碼和網(wǎng)頁(yè)編碼)resp.setContentType("text/html;charset=GB2312");// 字符流響應(yīng)客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

8.3. 編寫web.xml

8.4. 部署運(yùn)行, 網(wǎng)頁(yè)的中文顯示正常

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

9.1. 新建一個(gè)GWSetContentTypeUTF8.java類, 使用字符流響應(yīng)客戶端

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");// 網(wǎng)頁(yè)編碼UTF-8sb.append("<meta charset='UTF-8' />").append("\r\n");sb.append("<title>HttpServletResponse 字符流相應(yīng)中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字符流相應(yīng)中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 響應(yīng)客戶端的內(nèi)容類型是text/html 編碼是UTF-8(包含字符編碼和網(wǎng)頁(yè)編碼)resp.setContentType("text/html;charset=UTF-8");// 字符流響應(yīng)客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

9.3. 編寫web.xml

9.4. 部署運(yùn)行, 網(wǎng)頁(yè)的中文顯示正常

10. 使用字節(jié)流響應(yīng)數(shù)據(jù), 字節(jié)流默認(rèn)字符編碼是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 字節(jié)流相應(yīng)中文亂碼</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>HttpServletResponse 字節(jié)流相應(yīng)中文亂碼</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 字節(jié)流, 默認(rèn)字符編碼是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. 部署運(yùn)行

11. 不管是字節(jié)流還是字符流, 直接使用一行代碼就可以解決響應(yīng)亂碼問(wèn)題。

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

注: 我們最好使用<meta charset='UTF-8'?/>設(shè)置網(wǎng)頁(yè)編碼, 都設(shè)置為UTF-8編碼。

總結(jié)

以上是生活随笔為你收集整理的012_HttpServletResponse响应乱码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。