<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      “云擎”中云數(shù)據(jù)庫的亂碼的解決方案

      前段時間在京東云擎Jae平臺發(fā)布一個Java Web應用碰到了中文亂碼問題,通過與Jae開發(fā)團隊溝通和交流后發(fā)現(xiàn)主要因數(shù)據(jù)庫編碼與應用的字符集不一致造成,現(xiàn)在問題已得到順利解決,考慮到其它開發(fā)者可能也會遇到類似的情況,現(xiàn)在就把問題的出現(xiàn)和分析解決過程分享總結(jié)一下,幫助以后的開發(fā)者再遇到類似情況知道如何處理.

       

      應用發(fā)布 

        今年4月初我在京東云擎jae云擎注冊了個人帳戶,得到了2G內(nèi)存,以及20個應用的資源空間,另外還得到了總共25G的數(shù)據(jù)庫空間,免費版的mysql實例套餐是5G,正好我的應用會用到中使用的mysql數(shù)據(jù)庫,那好就試著創(chuàng)建了一個,本以為比較麻煩,結(jié)果就只需要點“新建數(shù)據(jù)庫”,然后再選擇數(shù)據(jù)庫類型,就很快創(chuàng)建了一個,挺方便的,還不錯,不過實例是建好了,不過怎么使用我呆會再說。 現(xiàn)在說重點,發(fā)布應用。創(chuàng)建了數(shù)據(jù)庫之后我在 jae的應用控制臺創(chuàng)建了一個java應用實例, 這個實例是通過模板創(chuàng)建,它創(chuàng)建后建可即訪問,不過只是個歡迎頁面,表示應用跑起來了,并且可以提供對外訪問,僅此而已,沒有實際的功能,具體的功能代碼還得自己加,由于想快一點把應用放上去看看效果,我沒有把本地的代碼上傳到應用對應的代碼庫中,而是直接用它war包上傳功能。

                  我首先把應用在本地調(diào)試了一下,確保能本地正常運行,然后打成war包,說明一下我的應用是maven來構(gòu)建的,只要在工程pom所在的路徑下執(zhí)行 mvn clean package命令就把工程的war包打好了。 jae提供的直接上傳war包發(fā)布的功能其實挺方便的,只要在jae應用管理控制臺選中要發(fā)布的應用 --->"部署管理"--->“上傳war包署”,我在對話框中選擇之前maven生成的war包,確認之后就開始上傳。

       

      順便說一下,上傳所需時間根據(jù)包大小和網(wǎng)絡帶寬而定,war包上傳過程中不要關(guān)閉對話框,否則會中斷本次上傳任務。對于大的工程序還是通過代碼托管理比較好。上傳完成之后應用被重新發(fā)布,所有操作都在管理控制臺的日志窗口實時輸出,看起來很直觀,

       

      很快提示我可以訪問應用了,點擊url,很快出現(xiàn)了我應用的登錄介面,到目前為止一切進展得挺順利, 但內(nèi)心卻有點隱隱的不安,果然在輸入完登錄帳號和密碼后報錯了,沒連上數(shù)據(jù)庫,這時候才想起應用的連接京東云數(shù)據(jù)庫的參數(shù)沒改,而且初始數(shù)據(jù)也沒有導入。

      數(shù)據(jù)連接參數(shù)配置

          說明一下,第一次用戶jae云數(shù)據(jù)庫的同學可能有疑惑,不知怎么連,主要有兩步,第一步:參數(shù)獲取,這個簡單,只要在jae應用管理中的云數(shù)據(jù)庫菜單下找到你要連接的數(shù)據(jù)庫實例,點擊實例名稱,就會彈出如下對話框,其中就有關(guān)鍵的數(shù)據(jù)庫參數(shù),

       

      第二步: 根據(jù)這些參數(shù)我把我應用中的數(shù)據(jù)庫配置文件作了相應的修改,然后重新把應用打包。

       

      數(shù)據(jù)初始化

       Jae提供了一個開源的云數(shù)據(jù)庫管理工具adminer。通過點擊數(shù)據(jù)庫客戶端鏈接即可進入,數(shù)據(jù)導入有兩種方式,一是直接在sql命令文本框中輸入(每條sql語句用";"分隔);第二種方式是上傳sql初始的腳本文件導入。數(shù)據(jù)初始化完成后可以在sql命令框中,輸入show tables,檢查表是否已創(chuàng)建,通過select查看數(shù)據(jù)是否已在表中。數(shù)據(jù)驗證完沒問題之后我重新上傳改了數(shù)據(jù)庫連接的war發(fā)布。

       

      中文亂碼問題

        應用重新發(fā)布正常啟動后,再次登錄,這次成功進入到應用的主介面,但是很快發(fā)現(xiàn)菜單全是亂碼,心中頓時一涼,

       

      應用的菜單是從數(shù)據(jù)庫中讀取出來的,難道數(shù)據(jù)庫中的數(shù)據(jù)不對?我于是回到adminer中查看了一下menu表中的數(shù)據(jù)中文是正常的, 但為什么在應用戶卻是亂碼,我應用中java代碼和jsp都是用utf-8編碼,云數(shù)據(jù)庫的字符集編碼也是utf8,我應用中用到了hibernate3.x與數(shù)據(jù)庫相關(guān)的配置中也明確指定了utf8,但最終顯示的菜單中文是亂碼實在太詭異了。

      后來就在adminer的sql命令框中輸入show variables like 'character_set%';得到如下輸出

       

      這說明adminer連接mysql字符參數(shù)是"latin1",而不是utf8,這與我應用的連接數(shù)據(jù)庫的方式不同。為了進一步證實我應用實際創(chuàng)建的數(shù)據(jù)庫連接狀態(tài),與jae開發(fā)團隊取得了聯(lián)系,并得到支持,我把我的數(shù)據(jù)庫參數(shù)信息發(fā)給他們,他們從云主機上直接通過mysql客戶端連接我的數(shù)據(jù)庫后,得到的當前會話Session

      的編碼信息如下

       

      查看菜單表中的數(shù)據(jù)果然也出現(xiàn)亂碼,如圖

       

      這與我應用遇到的情況一樣,現(xiàn)在問題逐漸清楚了,是由于adminer管理工具連數(shù)據(jù)庫用的默認是latin1字符集,那么在數(shù)據(jù)導入時,中文被按latin1編碼格式存儲,在adminer查詢數(shù)據(jù)時也是按latin1解碼所以看到中文都是正常的

       

      但是我的應用是按utf8來解碼(與存儲時用的utf8不一致),所以在應用的頁面中文出現(xiàn)亂碼。

       

      亂碼解決

      知道問題的所在解決方法一般有多種,我由于不想改變應用的源代碼中的數(shù)據(jù)處理邏輯,那么就從數(shù)據(jù)本身入手,就是由于有數(shù)據(jù)初始化腳本,重新按utf8編碼格式來初始化數(shù)據(jù)很簡單 。操作如下,

      1.  清空含有中文字符的表,delete,truncate都行,

      2.  用adminer導入時,需要改變當前session的字符編碼格式為utf8,即在腳本開始執(zhí)行 set names ‘utf8’

       

      3.  導入完成之后,應用不用重新部署和重啟,我登出后重新登錄,現(xiàn)在菜單果然正常顯示中文了

       

      現(xiàn)在應用沒有問題了,后面經(jīng)驗證,新錄入的中文信息也是正常的。但是正當我以為一切ok時回到adminer工具想看看數(shù)據(jù)表中的數(shù)據(jù)時,一件意想不到的事件出現(xiàn)了,現(xiàn)在adminer中看到的中文變成了亂碼。

       

      根據(jù)之前的分析,中文數(shù)據(jù)本身在數(shù)據(jù)庫中沒有問題,只是從數(shù)據(jù)庫讀出來解碼格式不對,所以才會這樣,處理這個問題很簡單,因為之前說過adminer默認是用latin1字符集來編碼和解碼,只要在select之前加用 set names 'utf8' 指定用utf8字符集就正常了

       

      這其實是adminer工具的問題,這樣的操作還是有點麻煩,最好是讓adminer在連接數(shù)據(jù)庫以及操作數(shù)據(jù)庫時默認用utf8事情有簡單多了。希望jae的開發(fā)團隊能盡快修復這個問題,為開發(fā)者提供一個方便好用的數(shù)據(jù)庫管理工具。

      posted @ 2014-06-23 12:37  中國云計算  閱讀(649)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 西西午夜无码大胆啪啪国模| 国产AV影片麻豆精品传媒| 五月婷婷中文字幕| 国产免费高清69式视频在线观看 | 日本高清不卡一区二区三| 久久se精品一区精品二区国产| 麻豆蜜桃av蜜臀av色欲av| 亚洲大尺度无码专区尤物| 欧美视频网站www色| 亚洲午夜av一区二区| 三级网站视频在在线播放| 亚洲日韩精品无码av海量| 人妻有码av中文字幕久久琪| 中文字幕无码中文字幕有码a| 国产资源精品中文字幕| 日本九州不卡久久精品一区| 日本一卡2卡3卡4卡无卡免费| 国产日本一区二区三区久久| 东方四虎av在线观看| 潜江市| 国产精品亚洲二区在线看| 久久精品国产亚洲av电影| 亚洲三级香港三级久久| av在线播放观看国产| 亚洲欧美国产日韩天堂区| 午夜高清国产拍精品福利| 丰满人妻一区二区三区无码AV| 亚洲成人午夜排名成人午夜| 高潮videossex潮喷| 内射极品少妇xxxxxhd| 最新亚洲av日韩av二区| 樱花草视频www日本韩国| 国产亚洲精品超碰热| 免费无码高H视频在线观看| 日韩精品一区二区都可以| 99精品久久精品| 亚洲欧美日韩国产精品一区二区| 成人亚欧欧美激情在线观看| 亚洲中文字幕日产无码成人片| 亚洲欧美高清在线精品一区二区| 佳木斯市|