整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          eclipse如何解決中文亂碼問題

          clipse運行頁面顯示中文亂碼

          頁面源碼

          <%@ page language="java" contentType="text/html; charset=ISO-8859-1"

          pageEncoding="ISO-8859-1"%>

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

          <html xmlns="http://www.w3.org/1999/xhtml">

          <head>

          <meta charset="ISO-8859-1">

          <meta http-equiv="X-UA-Compatible" content="IE=edge">

          <meta name="viewport" content="width=device-width, initial-scale=1">

          <meta name="description" content="">

          <meta name="author" content="">

          <title>客戶列表-BootCRM</title>

          </head>

          <body>

          <h1>解決中文亂碼</h1>

          </body>

          </html>

          tomcat運行后

          打開瀏覽器地址欄打就會出現亂碼現象

          分析問題

          首先排查一下服務器是否啟動,回看console最下面 server startup 表示服務器已經啟動了 沒有問題也沒有報錯。

          其次查看頁面源碼,發現有三處編碼為ISO-8859-1。

          注意:數字英文都正常顯示,只是中文亂碼,是因為ISO-8859-1是單字節編碼,此字符集支持部分于歐洲使用的語言,這個編碼不支持中文,所以要換支持的編碼啦,現在一般都通用UTF-8,因為ISO-8859-1是一個8位的容器。因為只有8位, 沒那么多地方可以表示中文,但是,由于是單字節編碼,和計算機最基礎的表示單位一致,所以很多時候,仍舊使用 ISO-8859-1編碼來表示。而且在很多協議上,默認使用該編碼。

          解決辦法

          將代碼中三處的ISO-8859-1 改成UTF-8就好了。

          <%@ page language="java" contentType="text/html; charset=UTF-8"

          pageEncoding="UTF-8"%>

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

          <html xmlns="http://www.w3.org/1999/xhtml">

          <head>

          <meta charset="utf-8">

          <meta http-equiv="X-UA-Compatible" content="IE=edge">

          <meta name="viewport" content="width=device-width, initial-scale=1">

          <meta name="description" content="">

          <meta name="author" content="">

          <title>客戶列表-BootCRM</title>

          </head>

          <body>

          <h1>解決中文亂碼</h1>

          </body>

          </html>

          此時運行結果就正常了

          位小伙伴今天我們來了解

          JavaWeb 中的 Response

          1)HttpServletResponse 概述

          我們在創建 Servlet 時會覆蓋 service() 方法,或 doGet()/doPost(),這些方法都有兩個參數,分別是代表請求的 request 和代表響應 response。(今天我們主要來說說 response)

          service 方法中的 response 的類型是 ServletResponse,而 doGet/doPost 方法的 response 的類型是 HttpServletResponse,HttpServletResponse 是ServletResponse 的子接口,功能和方法更加強大,所以今天我們來學習的就是 HttpServletResponse。

          2)response 的運行流程

          當我們通過頁面請求 web 應用的時候,Tomcat 就會創建一個 request 對象,和一個 response 對象一起傳進 Servlet 中,然后 Tomcat 會把response 緩沖區中的內容取出來 包裝成一個 http 響應返回頁面~

          因為 response 代表響應,所以我們可以通過該對象分別設置 Http 響應的響應行,響應頭和響應體

          3)通過response設置響應行

          常用的狀態碼如下:

          200 :請求成功。

          302 :請求重定向。

          304 :請求資源沒有改變,訪問本地緩存。

          404 :請求資源不存在。

          500 :服務器內部錯誤。

          通過 setStatus(int sc)方法可以設置響應行的狀態碼。

          4)通過 response 設置響應頭

          方法:

          addHeader(String name, String value)

          addIntHeader(String name, int value)

          addDateHeader(String name, long date)

          setHeader(String name, String value)

          setDateHeader(String name, long date)

          setIntHeader(String name, int value)

          其中,add表示添加,而set表示設置(會替換掉先前的內容)

          5)重定向

          重定向的意思:就好像我們去找張三借錢,張三沒錢,然后告訴我們李四有,讓我們去找李四。我們收到這個消息之后,就去找李四了。這就是一個重定向的過程。

          下面用代碼來演示一下:

          首先設置狀態碼302,然后設置頁面的路徑~

          這樣在我們訪問 Servlet1 的時候,頁面就會跳轉到 Servlet2 。

          這個就是重定向了~我們也可以把 Servlet1 中的兩句代碼簡化成為一行

          這個是Sun公司為我們封裝好玩的呦~

          6)通過 response 設置響應體

          響應體設置文本

          PrintWriter getWriter()

          獲得字符流,通過字符流的 write(String s) 方法可以將字符串設置到 response 緩沖區中,隨后 Tomcat 會將 response 緩沖區中的內容組裝成 Http 響應返回給瀏覽器端。

          關于設置中文的亂碼問題

          response 緩沖區的默認編碼是 iso8859-1,此碼表中沒有中文,可以通過 setCharacterEncoding(String charset) 設置 response 的編碼。但是這樣客戶端還是不能正常顯示文字。

          因為瀏覽器的默認編碼是本地系統的編碼,因為我們都是中文系統,所以客戶端瀏覽器的默認編碼是 GBK

          我們可以通過 response 的 setContentType(String type) 方法指定頁面解析時的編碼是UTF-8。

          因為該方法含有 setCharacterEncoding 的功能,所以在實際開發中只要編寫 response.setContentType("text/html;charset=UTF-8");就可以解決頁面輸出中文亂碼問題了。

          那么今天就到這里了

          伙伴們再見了

          我是萌新娜娜

          立志做一個不翻車的老司機

          學習Java的路上請多多指教

          大家如果想要更深入了解java相關知識,私信我回復:【Java】 即可知道你們想要知道的java相關問題

          文亂碼問題是比較常見和煩人的問題,本文通過一個小程序介紹了如何通過Servlet從上一個頁面獲取參數,

          方法很簡單:調用request.getParameter(String s)方法。

          解決中文亂碼問題的方法是:

          首先要設置response響應的格式:response.setContextType("text/html;charSet=GBK");

          然后在加上request.setCharacterEncoding("GBK")

          需要注意的是這是解決post方式提交的內容的中文亂碼問題。

          解決get方式提交內容的中文亂碼問題的方法:

          在Tomcat->conf文件夾->server.xml-->connecter標簽里加上:

          URIEncoding="GBK"(注意:在xml里面“=”兩邊不要有空格)

          關于Post和Get之間的區別可以看我轉載的另一篇博文:

          HTTP POST GET 本質區別詳解

          例子:

          1.threeparams.html


          1. <html>
          2. <body>
          3. <form method="post" action="Threeparams">
          4. <table>
          5. <tr>
          6. <td>
          7. param1
          8. </td>
          9. <td>
          10. <input name="p1" type="text"/>
          11. </td>
          12. </tr>
          13. <tr>
          14. <td>
          15. param2
          16. </td>
          17. <td><input name="p2" type="text"/>
          18. </td>
          19. </tr>
          20. <tr>
          21. <td>
          22. param3
          23. </td>
          24. <td><input name="p3" type="text"/>
          25. </td>
          26. </tr>
          27. <td><input type="submit" value="submit">
          28. </td>
          29. </tr>
          30. </table>
          31. </form>
          32. </body>
          33. </html>

          2.ThreeParams.java


          1. import java.io.*;
          2. import javax.servlet.ServletException;
          3. import javax.servlet.http.*;
          4. public class ThreeParams extends HttpServlet{
          5. @Override
          6. protected void doGet(HttpServletRequest req, HttpServletResponse resp)
          7. throws ServletException, IOException {
          8. doPost(req,resp);
          9. }
          10. @Override
          11. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
          12. throws ServletException, IOException {
          13. resp.setContentType("text/html;charset=GBK");
          14. //解決post方式提交內容的中文亂碼
          15. //一定要卸載存取第一個參數之前
          16. //不要調用resp.setCharacterEncoding("GBK");
          17. req.setCharacterEncoding("GBK");
          18. //解決get方式亂碼問題:修改server.xml中的connector標簽-->URIEncoding="GBK"
          19. PrintWriter out = resp.getWriter();
          20. out.println(req.getParameter("p1"));
          21. out.println("</br>");
          22. out.println(req.getParameter("p2"));
          23. out.println("</br>");
          24. out.println(req.getParameter("p3"));
          25. out.println("</br>");
          26. }
          27. }

          補充:

          上面的這個例子.html中每個name都不一樣,如果有多個一樣的name時,可以按如下的方法來獲取:

          1)Enumeration paramNames = request.getParameterNames()

          調用此方法獲得所有參數的名字,返回一個Enumeration

          2) while(paramNames.hasMoreElements()){

          String paramName = (String)paramNames.nextElement();

          String[] paramValues = request.getParameterValues(paramName);

          ...


          主站蜘蛛池模板: 丰满爆乳无码一区二区三区| 糖心vlog精品一区二区三区 | 亚洲日韩精品一区二区三区| 国产精品高清一区二区人妖 | 亚洲国产综合精品一区在线播放| 久久久精品人妻一区二区三区| 狠狠做深爱婷婷久久综合一区| 中文字幕人妻无码一区二区三区| 精品无码成人片一区二区| 久久精品午夜一区二区福利| 成人区人妻精品一区二区不卡网站| 久久国产一区二区三区| 国产在线一区二区在线视频| 精品一区二区三区水蜜桃| 无码少妇A片一区二区三区| 亚洲一区二区三区高清不卡 | 制服中文字幕一区二区| 精品国产AV无码一区二区三区| 国产福利91精品一区二区 | 亚洲一区二区三区免费观看| 色天使亚洲综合一区二区| 中文字幕一区在线观看视频| 中文字幕AV无码一区二区三区| 欧美一区内射最近更新| 一区二区三区免费在线视频| 国产自产在线视频一区| 亚洲高清一区二区三区 | 天海翼一区二区三区高清视频| 中文字幕一区二区三区在线播放| 国产在线不卡一区| 成人免费视频一区二区| 亚洲国产综合无码一区二区二三区 | 搜日本一区二区三区免费高清视频| 精品日韩一区二区三区视频| 蜜桃视频一区二区三区| 亚洲午夜日韩高清一区| 日本精品一区二区在线播放 | 无码午夜人妻一区二区不卡视频| 国产精品分类视频分类一区| 亚洲爆乳无码一区二区三区| 成人免费观看一区二区|