<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    陌上花開

    遇高山,我御風而翔,逢江河,我凌波微波

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::

    #

    最近一個項目,用到了mysql數據庫,很不幸的是我遇到了亂碼問題,分析了一下,我覺得不是網頁的問題.因為,我在MYSQL里直接添加中文的數據能在網頁上正常顯示,可是在網頁中操作添加的數據,到MYSQL數據庫里一看,全是???問號.跟蹤看了下,程序中最后處理到數據庫操作時,還是中文,操作到數據庫后,就是?問號了,能在mysql表中直接添加中文數據并能在網頁上正常顯示,說明數據庫表的編碼是對的,程序中最后處理的數據也是中文,這也說明程序中也沒有問題,問題可能出在MYSQL數據庫連接字符串上,于是我把mysql數據庫連接字符串改為:  jdbc:mysql://localhost:3306/xxxx?useUnicode=true&characterEncoding=UTF-8(有時可能需要將符號(&)轉碼寫成(&amp;)),試了一下,還是不行,百思不得其解,就問了下google,有人說,可能是數據庫的默認編碼錯誤,原因在于MYSQL服務器使用的默認編碼,在沒指定數據庫的字符編碼時,創建的數據庫就使用MYSQL服務器的默認編碼,但是,如果MYSQL服務器的配置文件沒有指定編碼時,很可能就是使用的latin1編碼.
    查看服務器和數據庫使用何種編碼的MYSQL命令為:
    SHOW VARIABLES LIKE 'character_set_%'; 
    以及 SHOW VARIABLES LIKE 'collation_%';
    看到里面使用的編碼了,我本以為應該使用的是utf8,所以,不是utf8的,那就說明問題在這里了.

    運行命令:SHOW VARIABLES LIKE 'character_set_%'; 結果如下
    'character_set_client', 'utf8'
    'character_set_connection', 'utf8'
    'character_set_database', 'latin1'
    'character_set_filesystem', 'binary'
    'character_set_results', 'utf8'
    'character_set_server', 'latin1'
    'character_set_system', 'utf8'
    'character_sets_dir', 'D:\soft_work\mysql\share\charsets\'
    果然發現有幾個不對的
    運行命令:SHOW VARIABLES LIKE 'collation_%'; 結果如下
    'collation_connection', 'utf8_general_ci'
    'collation_database', 'latin1_general_ci'
    'collation_server', 'latin1_general_ci'

    只要把那幾個的編碼改成utf8的,那應該就可以了.
    1: 在Mysql的配置文件 my.ini里加上服務器的默認編碼配置: default-character-set=utf8
    2: 修改你的數據庫的字符編碼:進入Mysql數據庫,通過命令修改你的數據庫字符編碼:
    ALTER DATABASE `databaseName` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci 
    (修改后需要重啟Mysql數據庫)
    3: 如果你的表以及表里的字段使用了不正確的字符編碼,同樣需要修正過來:命令:
     修改表的編碼: ALTER TABLE `tableName` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
     修改字段的編碼: ALTER TABLE `tableName` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
    (做好了時,在看一下上面那兩個查看字符編碼的命令,看看是否全部都變成了utf8)
    把mysql數據庫的編碼改為utf8后,有試了一下程序,發現不在是亂碼了,終于好了,
    總結,mysql的亂碼有一下幾個方面
    1,JSP設計頁面上是中文,但運行時看到的是亂碼,如果是這種情況,就要指定jsp頁面的編碼,默認情況下,jsp頁面的編碼是ISO-8859-1,解決方法就是在jsp頁面的編碼地方加入
    <%@ page language="java" contentType="text/html;charset=utf8" %>,
    2 ,當用Request對象獲取客戶提交的漢字時,會出現亂碼,那么就需要在項目中加入filter了,(filter在tomcat中自帶的有例子,可以照著例子改一下,也可以在googl中搜索一下)
    3,由于使用doget方法引起的亂碼,可以試著使用dopost提交,
    或者是打開tomcat的server.xml文件,找到區塊,加入如下一行: 

    URIEncoding=”GBK” 

    完整的應如下: 
    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100" debug="0"
     connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf8"/>
    需要重啟tomcat,

    4,寫入到數據庫是亂碼:
    如果你是通過JDBC直接鏈接數據庫的時候,配置的代碼如下:
    jdbc:mysql://localhost:3306/xxxxx?useUnicode=true&characterEncoding=utf8
    這樣保證到數據庫中的代碼是不是亂碼。

    5,如按照上述步驟解決,寫到數據庫中的還是亂碼,就要檢查數據庫,表的編碼方式了,如果跟程序中的不一致,就要按照本文的介紹的方法修改數據庫或者是表的編碼了。

    posted @ 2010-03-01 15:52 askzs 閱讀(6235) | 評論 (0)編輯 收藏

    在tomcat的conf目錄下找到web.xml,在里面查找  
      <servlet>  
                      <servlet-name>default</servlet-name>  
                      <servlet-class>  
                          org.apache.catalina.servlets.DefaultServlet  
                      </servlet-class>  
                      <init-param>  
                              <param-name>debug</param-name>  
                              <param-value>0</param-value>  
                      </init-param>  
                      <init-param>  
                              <param-name>listings</param-name>  
                              <param-value>true</param-value>  
                      </init-param>  
                      <load-on-startup>1</load-on-startup>  
              </servlet>  
      把里面的  
                      <init-param>  
                              <param-name>listings</param-name>  
                              <param-value>true</param-value>  
                      </init-param>  
      true改為false
    posted @ 2010-02-26 17:28 askzs 閱讀(573) | 評論 (0)編輯 收藏

    最近有個工程,需要把HnSp文件下的index.html作為默認頁面(目錄結構如下),


    我在web.xml中設置<welcome-file>HnSp/index.html</welcome-file>,可是前臺index.html

    能顯示出來,可是頁面中的圖片都顯示不出來(index.html中的圖片的路徑都是用的相對路

    徑),后來在發現顯示的頁面中的圖片少了一級,在圖片的路徑前加入HnSp就能正確顯示了

    ,可是在別的頁面通過鏈接訪問index.html頁面,圖片還是顯示不出來,看了知道,多了個

    HnSp,看來在圖片的路徑前加入HnSp是不對的,
    我一直想不懂為什么,后來想了個辦法解決了,就是在WebRoot下新建一個新的空頁面

    MyJspjsp,寫入如下代碼 <%response.sendRedirect("HnSp/index.html"); %>,然后把   

    <welcome-file>HnSp/index.html</welcome-file>,改為<welcome-

    file>MyJsp.jsp</welcome-file>,這樣問題就解決了,都不存在路徑錯誤問題了,

    response.sendRedirect()

    是在用戶的瀏覽器端工作,sendRedirect()可以帶參數傳遞,比如servlet?name=frank傳至下

    個頁面,同時它可以重定向至不同的主機上,sendRedirect()可以重定向有frame.的jsp文件.

    重定向后在瀏覽器地址欄上會出現重定向頁面的URL,由于response是jsp頁面中的隱含對象

    ,故在jsp頁面中可以用response.sendRedirect()直接實現重定位。

    posted @ 2010-02-26 17:19 askzs 閱讀(673) | 評論 (0)編輯 收藏

    僅列出標題
    共3頁: 上一頁 1 2 3 
    我要啦免费统计
    主站蜘蛛池模板: 久久免费精彩视频| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 最近最新高清免费中文字幕| 国产偷国产偷亚洲高清日韩| 免费播放在线日本感人片| 亚洲av区一区二区三| 亚洲AV午夜福利精品一区二区| 亚洲色欲色欲www在线播放| 麻豆最新国产剧情AV原创免费| 亚洲成a人片在线网站| 国产成人精品免费视频动漫| 免费又黄又爽又猛的毛片| 亚洲国产综合精品中文第一区| 99久久人妻精品免费一区| 亚洲国产高清美女在线观看| 青春禁区视频在线观看直播免费 | 精品亚洲麻豆1区2区3区| 久久WWW免费人成一看片| 久久夜色精品国产噜噜亚洲a| 四虎免费永久在线播放| 亚洲2022国产成人精品无码区| 最近免费字幕中文大全视频| 亚洲剧情在线观看| 日韩人妻无码免费视频一区二区三区| 猫咪免费人成网站在线观看入口| 日日噜噜噜噜夜夜爽亚洲精品| 99久久精品免费精品国产| 亚洲日韩精品A∨片无码加勒比| 免费中文字幕在线| 日本高清高色视频免费| 日韩亚洲产在线观看| 亚洲精品国产高清不卡在线| 亚洲欧美成人一区二区三区| 亚洲AV日韩精品一区二区三区| 国产啪精品视频网站免费尤物| 亚洲一级毛片视频| 亚洲欧洲中文日韩久久AV乱码| 四虎国产精品永久免费网址| 亚洲国产精品一区二区久久hs| 韩国免费一级成人毛片| 一区二区三区在线观看免费 |