程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> jsp中文頁面亂碼與傳參亂碼

jsp中文頁面亂碼與傳參亂碼

編輯:關於JSP

       頁面亂碼

      這種亂碼的原因是應為沒有在頁面裡指定使用的字符集編碼,解決方法:只要在頁面開始地方用下面代碼指定字符集編碼即可

    代碼如下  

    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="err.jsp" %>

      數據庫亂碼

      這種亂碼會使你插入數據庫的中文變成亂碼,或者讀出顯示時也是亂碼,

      解決方法如下:

      在數據庫連接字符串中加入編碼字符集

    代碼如下   String Url="jdbc:mysql://localhost/digitgulf?user=root&password=root&useUnicode=true&characterEncoding=GB2312";

      並在頁面中使用如下代碼:

    代碼如下   response.setContentType("text/html;charset=gb2312");
    request.setCharacterEncoding("gb2312");

      URL傳值亂碼

      方法一:

      1. 在b.jsp中把pageEncoding="GB2312"改為pageEncoding="ISO8859-1"

      雖然這樣b.jsp頁面顯示的內容還是亂碼,但是不是那種“??????”的亂碼,而是一些特殊字符

      2. 然後在浏覽器中查看菜單中修改成GB2312的編碼,這時亂碼就顯示中文了。

      3. 但是這種方法是不可行的。

      方法二:

      1. 在b.jsp中把

    代碼如下   String name=request.getParameter("name");

      修改為

    代碼如下   String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"GB2312");

      2. 這時再在頁面上顯示,則就是中文了。

      方法三:

      在請求頁面的請求參數需要用encodeURI進行轉碼,然後在接收請求的頁面需要進行字符集轉換。 本例中的請求和接收頁面的字符集都是UTF-8:

      1.請求的JSP頁面用JavaScript的encodeURI()方法將參數轉碼:

    代碼如下   function toView(param){
    var encodeparam = encodeURI(param) ;
    window.location.href="/naias/advAna_form.do?method=showDetail&title="+encodeparam ;
    }

      2.在跳轉的Action中進行字符集轉換: www.111cn.net

    代碼如下   public ActionForward excute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){
    String title= request.getParameter("title");
    title= new String( title.getBytes("iso-8859-1"), "UTF-8");
    System.out.println(title);
    }

      為編碼為UTF-8的JSP頁面傳參,對於中文亂碼的解決分為兩種情況:

      1.通過GET方式傳參,通過

    代碼如下   new String(request.getParameter("").getBytes("ISO-8859-1"),"UTF-8");

      的方式轉換為需要的編碼,如UTF-8等。

      2.通過POST方式傳參,通過聲明

    代碼如下   request.setCharacterEncoding("UTF-8");
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved