




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Web應(yīng)用中的中文問題以及數(shù)據(jù) 表亂碼一、Web應(yīng)用中的中文問題: Jsp頁(yè)面編碼:告訴jsp引擎, 在將jsp轉(zhuǎn)成servlet源文件時(shí), 該jsp文件的編碼是什么。相當(dāng)于Servlet中的response.setContextType()。即設(shè)置相應(yīng)頭。 瀏覽器會(huì)依據(jù)該編碼來顯示頁(yè)面,保持jsp文件時(shí),其真正的編碼應(yīng)該與設(shè)置的 一致。Html:preferences-General-ContentTypemyEclipse的:2、eclipse和java文件編碼設(shè)定Window-preferences-General-WorkspaceUTF-8。方便項(xiàng)目移植到linux下編寫。3、項(xiàng)目編
2、碼 這里遇到的問題是,眼前的項(xiàng)目已經(jīng)編寫了大部分了,然而,只想接下來的新建 的文件的 編碼是UTF-8,而 以前的不 變。 那么右 鍵自己的項(xiàng) 目”(數(shù)據(jù)庫(kù)名)default character set utf8;可以使用:(數(shù)據(jù)庫(kù)名)default character set utf8;1、改成utf-8。window-preferences-myEclipse-filesISO10646/UTF-8.andeditors-jsp encoding設(shè)成Text file encoding改為-Properties-Resource-Text file encoding4、JSP編碼Windo
3、w-myeclipse-Files and Editors-JSP成UTF-8。數(shù)據(jù)庫(kù)字符集為utf-8 mysql亂碼處理總結(jié):(1) java題.(2)字段 長(zhǎng) 度 設(shè) 置 夠 長(zhǎng),但 插 入 中 文 字 符 時(shí) 提 示com.mysql.jdbc.MysqlDataTruncation:Data truncation: Data too long for column錯(cuò)誤是字符集的問題.(3)亂碼問題歸根到底是字符集的問題,那就從字符集設(shè)置方面考慮,不 外乎下面幾個(gè)方面:server,client,database,connection,results.解決辦法(1)修改my.ini(M
4、ySQL Server Instance Configuration # CLIENTSECTION客戶端的配置client port=3306 mysql default-character-set=gbk# SERVER SECTION服務(wù)器端的配置mysqld default-character-set=gbk(2)修改data目錄中相應(yīng)數(shù)據(jù)庫(kù)目錄下的db.opt配置文件default-character-set=gbk改為UTF-8、XML都在encoding中調(diào)節(jié)三、數(shù)據(jù)表里面有中文的字段中文都變成了亂碼,導(dǎo)出數(shù)據(jù)也是亂碼中處理中文字符正常,在cmd client中顯示亂碼是字符集的
5、問文件)default-collation=gbk_chinese_ci(3)數(shù)據(jù)庫(kù)連接串中指定字符集URL=jdbc:mysql:/yourIP/college?user=root&password=yourPassword&useUnicode=true&characterEncoding=gbk注:在mysql4.1.0版 要加useUnicode=true&characterEncoding=gbk如果是5.0版以上的,加不加都是沒有關(guān)系的!一般的我們?cè)O(shè)置為:URL=jdbc:mysql:/localhost:3306/servletdb?charact
6、erEncoding=gbk(4)在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)指定字符集create database yourDB CHARACTER SET gbk;如:create database servletdb defalutcharacter set gbk;(5)在dos命令上要設(shè)置set names gbk使用show variables查看到你的字符集,現(xiàn)在我們默認(rèn)的是latin1要改變服務(wù) 器的編碼必須重新啟動(dòng)服務(wù)器。SHOW VARIABLES LIKE character_set_%;改哪個(gè)設(shè)置一下才能顯示出來的是正常的中文字? 和字符相關(guān)的變量中這幾個(gè)和sql很有關(guān)系:character_se
7、t_clientcharacter_set_connection character_set_results此外就是數(shù)據(jù)庫(kù)中對(duì)相應(yīng)字段設(shè)置的charact set,如果沒有對(duì)字段設(shè)置,缺省 是table的charact set,table也沒有指定則缺省使用database的。在SQLyog下輸入下面代碼,全部執(zhí)行SET character_set_client = utf8; SETcharacter_set_results = gb2312; SET character_set_connection = utf8;假 如上邊的不行, 還可以改成Gbk??傄愿鶕?jù)你的數(shù)據(jù)的文字編碼改成相應(yīng)的編
8、碼 類型就clientresults不一定是同一個(gè)客戶端) ,connection則在客戶端和數(shù)據(jù)庫(kù)起一個(gè)連接作用。 在之前的文章里,我已經(jīng)提過如何解決JSP中亂碼問題(解決tomcat下中文亂 碼問題),其中也詳細(xì)解說了ok了。表示客戶端發(fā)送過來的字符集,表示發(fā)送到客戶端的字符集(這兩個(gè)分開是因?yàn)榘l(fā)送過來和發(fā)送過去的r H.MYSQ亂碼問題,相信通過里面的辦法,肯定都已經(jīng)解決了JSP里的亂碼問題,不過還是有些人的MYSQ亂碼問題沒有得到解決, 包括我自己,所以又找了一些資料,希望這次能完全解決MYSQ數(shù)據(jù)庫(kù)的亂碼問題。第一種方法,很精辟的總結(jié): 經(jīng)常更換虛擬主機(jī),而各個(gè)服務(wù)商的MYSQ版本不
9、同,當(dāng)導(dǎo)入數(shù)據(jù)后,總會(huì)出現(xiàn)亂 碼等無法正常顯示的問題,查了好多資料,總結(jié)出自己的一點(diǎn)技巧:WINDOW下導(dǎo)入應(yīng)該這樣使用MYSQ的命令在DOS命令下進(jìn)入mysql的bin目錄下,輸入mysql -uroot -p密碼 數(shù)據(jù)庫(kù)名稱要恢復(fù)的數(shù)據(jù)庫(kù),例如我們要把D盤的一個(gè)名稱為test.sql的數(shù)據(jù)庫(kù)恢復(fù)到本 地的test2這個(gè)數(shù)據(jù)庫(kù),那么就這樣: mysql -uroot -p密碼test2以前的國(guó)外 主機(jī)用的Mysql是4.X系列的,感覺還比較好,都無論GBK和UTF-8都沒有亂碼, 沒想到新的主機(jī)的Mysql是5.0版本的,導(dǎo)入數(shù)據(jù)后,用Php讀出來全是問號(hào), 亂碼一片,記得我以前也曾經(jīng)有過一
10、次切換出現(xiàn)亂碼的經(jīng)驗(yàn),原因肯定是Mysql版本之間的差異問題。只好查資料,發(fā)現(xiàn)了一個(gè)解決方法, 就是在mysql_connect后面加一句SETNAMESUTF8即可使得UTF8的數(shù)據(jù)庫(kù)消除亂碼,對(duì)于GBK勺數(shù)據(jù)庫(kù)則使用SETNAMESBK代碼如下:$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);mysql_query(SET NAMES GBK);數(shù)據(jù)庫(kù)字符集為utf-8連接語(yǔ)句用這個(gè)mysql_query(SET NAMES UTF8); mysql_query(SET CHARACTER SET U
11、TF8);mysql_query(SET CHARACTER_SET_RESULTS=UTF8);還有個(gè)方法就是,如果你自己的機(jī)器的話,可以更改MYSQ字符集,一般在MYSQ4和MYSQL這5兩個(gè)版本中有效 第二個(gè)方法:很不錯(cuò)的解說,可以試一下mysql亂碼處理總結(jié):(1) java題.(2)字 段 長(zhǎng) 度 設(shè) 置 夠 長(zhǎng),但 插 入 中 文 字 符 時(shí) 提 示com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column錯(cuò)誤是字符集的問題.(3)亂碼問題歸根到底是字符集的問題,那就從字符集設(shè)置方面考慮
12、,不 外乎下面幾個(gè)方面:server,client,database,connection,results.- 解決辦法 -(1)修改my.ini(MySQL Server Instance Configuration # CLIENT中處理中文字符正常,在cmd client中顯示亂碼是字符集的問文件)SECTIONclient port=3306mysql default-character-set=gbk # SERVER SECTIONmysqld default-character-set=gbk(2)修改data目錄中相應(yīng)數(shù)據(jù)庫(kù)目錄下的db.opt配置文件default-chara
13、cter-set=gbkdefault-collation=gbk_chinese_ci(3)數(shù)據(jù)庫(kù)連接串中指定字符集URL=jdbc:mysql:/yourIP/college?user=root&password=yourPassword&useUnicode=true&characterEncoding=gbk注:在mysql4.1.0版 要 加useUnicode=true&characterEncoding=gbk如果是5.0版以上的, 加不加都是沒 有關(guān)系的!(4)在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)指定字符集create database yourDB CHARACTE
14、R SET gbk;(5)在dos命令上要設(shè)置set names gbk好了,經(jīng)過檢查上面四個(gè)方面的設(shè)置,應(yīng)該OK了!不會(huì)出現(xiàn)諸如com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column等問題.Mysql中文亂碼解決原來常常在群里看到mysql的亂碼問題,但是由于本人一直在用oracle和sql server所以沒多在乎, 昨天用了用mysql結(jié)果就遇到了傳說中的亂碼.。 現(xiàn)在 我們來講講mysql的亂碼問題。首先你進(jìn)入的你mysql用show variables查看這里可以查看到你的字符集,ch
15、aracter_set_server是服務(wù)器編碼。 現(xiàn)在我們默 認(rèn)的是latin1要改變服務(wù)器的編碼必須重新啟動(dòng)服務(wù)器,我們先用mysqladmin-urootshutdown關(guān)閉服務(wù)器,然后mysqld-C GBK啟動(dòng)服務(wù)器 -C是character_set_server的一個(gè)簡(jiǎn)寫 (可 以也可 以寫成mysqld-character_set_server gbk).這樣修改以后我們?cè)龠M(jìn)入mysql查看就會(huì)顯示: 這樣我們就把服務(wù)器和數(shù)據(jù)庫(kù)的編碼改為了GBK?,F(xiàn)在我們就可以插入中文字符串了,但是為什么有時(shí)間還是會(huì)顯示Exception in threadmain com.mysql.jdbc
16、.MysqlDataTruncation: truncation: Data too long forcolumn name at row 1這是因?yàn)槟阒皇切薷牧薽ysql的服務(wù)器的字符編碼, 并沒有修改已經(jīng)有數(shù)據(jù)庫(kù)的 編碼,這時(shí)候你需要手動(dòng)的把data目錄下的數(shù)據(jù)庫(kù)中的db.opt中的編碼改為default-character-set=gbk default-collation=gbk_chinese_ci這樣修改以后你在重啟服務(wù)器就可以插入中文了。但是這時(shí)候還有個(gè)問題就是在你應(yīng)用程序當(dāng)中顯示的是中文字符, 但是在命令窗 口還是亂碼。這時(shí)候你注意我們上面圖中的character_set_cl
17、ient字符還是latin1當(dāng)然顯示 的是亂碼咯喲。 所以你進(jìn)入mysql客戶端程序的時(shí)候因該把客戶端默認(rèn)的編碼改 為gbk才能顯示正常。你可以在mysql里修改,也可以在登陸的時(shí)候mysql-uroot-default-character-set=gbk修改 如此以來就解決了中文問題了。我剛開始的時(shí)候在程序中加入了一個(gè)characterEncoding變量(下圖),但是想 來想去都覺得這個(gè)變量沒什么用,所以后來去掉也能顯示正常。jdbc:mysql:/:3306/ee?characterEncoding=gbk第三種方法,說有太復(fù)雜了,反到不知道怎么弄了,你試試,也許可以用
18、得上1.修改/etc/f文件,改成這樣:mysqlddatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockdefault-character-set=utf8mysql.server user=mysqlbasedir=/var/lib mysqld_safeerr-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid注意:就是加入了一句default-character-set=utf8。2. /etc/init.d/mysqld restart重新啟動(dòng)mysql;3.打開
19、phpmyadmin選擇lang為Chines simplifies(zh-utf-8),選擇MySQL連接校對(duì)為utf8_general_ci 點(diǎn)“顯示MySQL的運(yùn)行信息”-“變量”,可 以看到:character set client utf8 utf8character set connection utf8 utf8character set database utf8 utf8character set results utf8 utf8character set server utf8 utf8character set system utf8 utf8collation con
20、nection utf8_general_ci utf8_general_ci collation databaseutf8_general_ci utf8_general_ci collation server utf8_general_ci utf8_general_ci從這里可以看到character全部變成utf8了。有人要問,為什么都要改成utf8呢?改成GB2312不行嗎? 解釋如下:我也不想改成utf8,只是phpmyadmin2.6在mysql4.1的時(shí)候只會(huì)用utf8,連其 他頁(yè)面的Datacharset也都是utf8,改成gb2312定會(huì)亂碼,我們只能湊phpmyadmin
21、了。只有在mysql3.23的時(shí)候,phpmyadmin才會(huì)多一個(gè)gb2312的頁(yè)面charset,這 時(shí)候是正常的。3.將以前的mysql3的庫(kù)文件導(dǎo)入mysql4.1的庫(kù)有兩種情況:一是從phpmyadmin上導(dǎo)入,這時(shí)候你要注意的是在選擇庫(kù)文件的頁(yè)面左下腳有 個(gè)“文件的字符集:”,默認(rèn)是utf8,要改成gb2312,否則導(dǎo)進(jìn)去亂碼; 二是在linux下導(dǎo)入,這時(shí)候你需要先在庫(kù)文件的頭部加一行:SET NAMES gb2312;注意最后也是;號(hào),別漏了。然后執(zhí)行mysql -u用戶名-p密碼xxx.sql 庫(kù)名導(dǎo)入完成以后再用php myadmin打開看,里面的中文字就是正確的。4.從my
22、sql4.1里導(dǎo)出庫(kù)文件一. 用phpmyadmin導(dǎo)出導(dǎo)出倒是問題不大,如果phpmyadmin的瀏覽頁(yè)面里顯示的中文是正常的,那么 導(dǎo)出肯定也是正常的二. 在linux上導(dǎo)出如果用mysqldump導(dǎo)出出現(xiàn)了亂碼也沒有關(guān)系,可以運(yùn)行iconv來轉(zhuǎn)換一下iconv -c -f UTF-8 -t GB2312庫(kù)文件名新的gb2312的庫(kù)文件名 綜上所述,你要注意:1。 盡量在需要導(dǎo)入的庫(kù)文件的開頭加入SETNAMESgb2312;告訴mysql你要導(dǎo) 入的是一個(gè)gb2312的文件;2。可能你需要這個(gè):SET NAMES utf8;在登陸到mysql后用,把character的一些默認(rèn)參數(shù)改到u
23、tf8上,有時(shí)可以減 少一些困擾,不過也不是必須的。在mysql上使用:SHOW VARIABLES LIKE character_set_%;用來查看當(dāng)前的狀態(tài)。3。如果出現(xiàn)亂碼也不要怕,一是你要注意留存原有的備份,二是用iconv來進(jìn)行 轉(zhuǎn)化。在正常使用之前注意做導(dǎo)入導(dǎo)出的測(cè)試, 確保萬無一失。最后加一句:原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處。呵呵 郵件:作者: MySQL發(fā)布日期: 2005-12-14我升級(jí)了MYSQ到4.1.2,phpmyadmin用的是2.6.2。數(shù)據(jù)表里面有中文的字段 中文都變成了亂碼, 導(dǎo)出數(shù)據(jù)也
24、是亂碼。 我用以前的2.5.7沒有問題, 想問一下,應(yīng)該在phpmyadmin的那個(gè)文件里改哪個(gè)設(shè)置一下才能顯示出來的是正常的中文 字? 和字符相關(guān)的變量中這幾個(gè)和sql很有關(guān)系:character_set_client character_set_connection character_set_results此外就是數(shù)據(jù)庫(kù)中對(duì)相應(yīng)字段設(shè)置的charact set,如果沒有對(duì)字段設(shè)置,缺省 是table的charact set,table也沒有指定則缺省使用database的。在SQLyog下輸入下面代碼,全部執(zhí)行SET character_set_client = utf8; SETcharacter_set_results = gb2312; SET character_set_connection = u
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村基礎(chǔ)設(shè)施改善及公共服務(wù)平臺(tái)建設(shè)協(xié)議
- 2025年吳忠2024危險(xiǎn)品運(yùn)輸從業(yè)資格考試題庫(kù)
- 高品質(zhì)農(nóng)業(yè)種植協(xié)議
- 2025年蘇州危險(xiǎn)品考試
- 農(nóng)村畜牧飼養(yǎng)托管協(xié)議
- 2025年原子吸收分光光度計(jì)合作協(xié)議書
- 公司出租房屋租賃合同
- 項(xiàng)目投資合作協(xié)議之共同發(fā)起融資合同書
- 個(gè)人網(wǎng)絡(luò)服務(wù)委托協(xié)議
- 教育培訓(xùn)課程開發(fā)與運(yùn)營(yíng)合同
- 2025屆WMO世界奧林匹克數(shù)學(xué)競(jìng)賽(中國(guó)區(qū))八年級(jí)地方晉級(jí)選拔賽模擬試題合集2套(AB卷)附答案
- 2025年四川省綿陽(yáng)市涪城區(qū)九年級(jí)中考數(shù)學(xué)第二次診斷試卷(含答案)
- 磚砌蓄水池施工方案72698
- 2025年河北承德中考試題及答案
- 白癜風(fēng)診療共識(shí)(2024版)解讀
- T-CCA 035-2024 現(xiàn)制現(xiàn)售飲品添加糖量及食品安全操作指南
- 創(chuàng)業(yè)創(chuàng)新大賽職教賽道
- 圍手術(shù)期肺部感染預(yù)防
- 2025年春季安全教育主題班會(huì)教育記錄
- 2024版特種設(shè)備重大事故隱患判定準(zhǔn)則課件
- 2025年全球及中國(guó)鋼制螺旋錐齒輪行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
評(píng)論
0/150
提交評(píng)論