<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                從開始敲drp到現在的hibernate,中文數據亂碼無時無刻不“陪伴”在我的身邊: ![](https://box.kancloud.cn/2016-03-10_56e132d86f5bd.jpg) 圖一:在drp的分銷商模塊,每次修改區域雖然返回修改成功,但是每次讀取到的中文數據都是“???”的字符串,但數字和字母的數據卻不受影響。 ![](https://box.kancloud.cn/2016-03-10_56e132d882c83.jpg) 圖二:不管是drp還是hibernate項目,通過執行sql或者hql語句插入中文數據的,都會呈現圖中的景象,甚是無語。。。。。。 但被它困擾了這么久,我也算“久病成醫”,今天就一起來給Java項目醫治一下中文數據亂碼的這個大病。 在哲學上有句話“頭痛醫頭,腳痛醫腳”,但這是一個錯誤的觀點。因為頭痛不一定只是頭出現了問題,這個插入數據亂碼也是一樣的道理,所以我們不能單單地把問題歸結到MySql身上,或者怪罪到Java程序上。下面大家就和我一起踏上探索“數據亂碼”的征途: ###?第一站:開發環境的中文字符集: 在drp的開發過程中,在分銷商維護模塊中,每次修改分銷商信息時,數據可以完美地插入,但是數據庫中的中文都是“???”這樣的字符串,導致讀取出來的數據也是亂碼。這時我們要進行一步步的排查,先從開發環境下手,打開myeclipse中的window,執行如下操作: ![](https://box.kancloud.cn/2016-03-10_56e132d893e32.jpg) 這樣就可以保證我們開發環境為GB18030;[PS:GB18030:國家標準,信息技術 中文編碼字符集] ### ? 第二站:將Navicat和開發環境的字符集設置保持一致 在上面的圖中,我們對開發環境設置了中文編碼的字符集,可能會解決一部分人遇到的問題,但是依舊沒有解決我的問題。所以我要繼續探索! 使用Navicat軟件,打開你要使用的數據庫的表,右擊--選擇”設計表“: ![](https://box.kancloud.cn/2016-03-10_56e132d8b6eb8.jpg) 選中要輸入中文數據的字段,對它的屬性進行如下設置: ![](https://box.kancloud.cn/2016-03-10_56e132d8ea104.jpg) 將這一步完成,可能是你的解決方案,但還不是我的;怎么辦??涼拌,繼續出發向前: ### ? 第三站:"method"中get的亂入 我們經常會對某個方法的method進行設置,在這里傳輸數據時使用post可以避免get方式帶來的亂碼。 ### ? 第四站:連接數據庫的配置文件中缺少“約束” (這里有hibernate.cfg.xml和User.properties文件兩種) 在"沙漠"中經過幾站的長途跋涉,我終于看到一眼清泉:通過對配置文件進行少許的更改,便可以一解我的燃眉之急: 方式一:使用.xml文件對數據庫進行配置: ~~~ <span style="font-family:FangSong_GB2312;font-size:18px;"><hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_cache</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.show_sql">true</property> </sessionFactory></span> ~~~ 在connection.url行只是書寫數據庫的地址和相應的數據庫名稱,卻沒有對中文字符集進行配置,所以要對這行代碼進行如下修改: ~~~ <span style="font-family:FangSong_GB2312;font-size:18px;"><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_extends?useUnicode=true&amp;characterEncoding=UTF-8</property> </span> ~~~ 我們可以注意到,變化的是數據庫名之后跟上的那句用來設置中文字符集的代碼,但是這里有幾個注意點: ![](https://box.kancloud.cn/2016-03-10_56e132d906aa6.jpg) #####1.不要讓中文問號“魚龍混珠” 數據庫名之后的問號一定是英文狀態下的,如果是中文狀態的,那么在執行這個配置文件時,中文狀態的問號會被myeclipse譯成三個問號,就會發出“配置語句錯誤”的提示; ##### 2.一個都不能少 useUnicode=true之后跟著的一定是“&amp;",這五個元素一個都不能少,但是一般情況下,直接在網頁中將這五個元素復制粘貼到配置文件中,會只顯示一個“&”:這樣控制臺就會打印:“Encoding應該以分號結束”,這個錯誤不是要在最后加上分號,而是注意這五個元素的“一個都不能少!” 方式二:使用.properties文件進行配置: ~~~ <span style="font-family:FangSong_GB2312;font-size:18px;">jdbc.driver = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql:///shop jdbc.user = root jdbc.password =123</span> ~~~ 這種情況出現亂碼時,就對jdbc.url進行如下更改: ~~~ <span style="font-family:FangSong_GB2312;font-size:18px;">jdbc.url = jdbc:mysql:///shop?useUnicode=true&characterEncoding=UTF-8</span> ~~~ 這樣我們就完成了每一個環節的中文字符集設置,也就解決了Java程序的“中文亂碼問題”這個大弊病了。 到這里,這次的沙漠探索之行就結束了,解決錯誤不是目的,目的是要在解決錯誤的過程中進行分析和思考,不被表象所蒙蔽,進而不犯“頭痛醫頭腳痛醫腳”的錯誤,也就是老師經常給我們講到的全局觀----“不謀全局者不足謀一隅,不謀萬世者不足謀一時!” ?![](https://box.kancloud.cn/2016-03-10_56e132d91de88.jpg) ? ? ??
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看