熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

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

2013-11-15 12:04:20  來源: JSP教程 

  頁面亂碼

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

代碼如下  

  <%@ page contentType="text/html; charset=gb" language="java" import="javasql*" errorPage="errjsp" %>

  數據庫亂碼

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

  解決方法如下

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

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

  並在頁面中使用如下代碼

代碼如下   responsesetContentType("text/html;charset=gb");
requestsetCharacterEncoding("gb");

  URL傳值亂碼

  方法一

   在bjsp中把pageEncoding="GB"改為pageEncoding="ISO"

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

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

   但是這種方法是不可行的

  方法二

   在bjsp中把

代碼如下   String name=requestgetParameter("name");

  修改為

代碼如下   String name=new String(requestgetParameter("name")getBytes("ISO")"GB");

   這時再在頁面上顯示則就是中文了

  方法三:

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

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

代碼如下   function toView(param){
var encodeparam = encodeURI(param) ;
windowlocationhref="/naias/advAna_formdo?method=showDetail&title="+encodeparam ;
}

  在跳轉的Action中進行字符集轉換 wwwcnnet

代碼如下   public ActionForward excute(ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response){
String title= requestgetParameter("title")
title= new String( titlegetBytes("iso") "UTF")
Systemoutprintln(title)
}

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

  通過GET方式傳參通過

代碼如下   new String(requestgetParameter("")getBytes("ISO")"UTF");

  的方式轉換為需要的編碼如UTF

  通過POST方式傳參通過聲明

代碼如下   requestsetCharacterEncoding("UTF");
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20214.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.