熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

JSP虛擬主機使用中的亂碼問題

2013-11-23 19:18:41  來源: Java核心技術 
    在使用JSP的過程中最使人頭疼的一個問題就是中文亂碼問題以下是我在軟件開發中遇到的亂碼問題以及解決方法
POST提交表單是亂碼
    常見的情況為:頁面都正常但新插入的數據全是亂碼
    這種情況就是因為提交的數據被程序接收後就是亂碼這個亂碼又插入數據庫了所以顯示不正常
解決方案:
    a 修改配制來完成
    修改tomcat的配制文件serverxml中的連接器加上URIEncoding=GB就OK了
    b 自己寫編碼轉換程序
    ba 在與表單交換數據的時候做轉換這種方式靈活
    每一個頁面請求寫一個轉換或者寫一個公共的類在接收的時候都做一下轉移代碼如下:
    public static String ISOGBChange(String s)
    {
    return EncodeChange(sISOGB);
    }
    public static String EncodeChange(String sString source_encodeString dest_encode)
    {
    if(s==null)
    return null;
    try
    {
    byte[] tmpbyte = sgetBytes(source_encode);  s = new String(tmpbytedest_encode);
    return s;
    }
    catch (Exception e)
    {
    return ERROR;
    }
    }
    bb 使用tomcat的webxml中定義的過濾器filter來轉換所有的請求編碼
    這個需要自己去研究一下過濾器的寫法再具體的轉換編碼還是ba中的代碼進行編碼轉換的只是轉移不用再寫在每個程序中了
  數據庫中本來就是亂碼
    就是說數據庫裡面的數據本來就是亂碼無論您用什麼編碼連接數據庫查看到的都是亂碼如何確定數據庫中本來就是亂碼呢?(其實也不太容易確定我們僅給出一個大概的判斷)
    您用客戶端連接數據庫的時候一定要選擇連接編碼為GBUTFISO等常見的編碼格式連接並查看您的表中內容是不是正常的若沒有一種情況是正常的應該就可以判定為亂碼了
    當然這個判定並不標准甚至問題很多但在國內我想%以上都用這幾種編碼所以我認為這個判定准確性是可以被接受的
    解決方案:您用客戶端連接數據庫的時候一定要選擇連接編碼為GB或者GBK然後於重新執行數據庫腳本保證數據庫裡保存的是正常的字符而不是亂碼
    從數據庫提取出來就是亂碼
    數據庫裡本來是正常的但用JAVA連接後一經提取就全亂了
    解決方案:修改JAVA連接數據庫的URL加上或者修改URL中的編碼為UTFcharacterEncoding=UTF若是hibernate的配置問題jdbc連接url不能有&符號會導致出錯或者後面不生效我用&代替就好了
    不要以為用的是GB這裡就指定為GB(個人認為若指定為GB驅動又多做了一次編碼轉換所以就又成了亂碼了)
    當然也可能驅動太舊等情況
    上面只說了常見的幾種亂碼問題%以上的應該都是上面講到的還有很多情況就需要您自己慢慢分析了
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26633.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.