MySQL中文亂碼解決方案集錦 |
發(fā)布時(shí)間: 2012/8/9 17:36:53 |
整理一些MySQL中文亂碼解決方案,比較實(shí)用。 在使用MySQL時(shí),插入中文字符,經(jīng)常會(huì)出現(xiàn)亂碼,中文全被用?代替。 出現(xiàn)這種情況的原因,多是字符集不匹配造成的。 在MySQL中,如果使用缺省的字符集,在建庫(kù)、建表時(shí),默認(rèn)使用的是latin1字符集,為ISO 8859-1西歐字符集。 插入中文字符時(shí),與之不匹配,就會(huì)出現(xiàn)亂碼。 本人使用的是MySQL 5.0版,并用C#操作MYSQL數(shù)據(jù)庫(kù),當(dāng)插入中文字符時(shí),發(fā)現(xiàn)顯示的是亂碼。 初步估計(jì)是字符集沒有配對(duì)。查找后,發(fā)現(xiàn)MSYQL默認(rèn)使用的是latin1,因此將數(shù)據(jù)庫(kù)的配置文件中的字符設(shè)置改為utf8,并在C#中將中文字符,轉(zhuǎn)為utf8,插入后,仍為亂碼。 MySQL也支持gb2312,又將MySQL的字符設(shè)置改為gb2312,C#中使用Default,重起MySQL后,操作仍然無效。 后想起,雖然將MySQL的字符集設(shè)置為gb2312或utf8,但已經(jīng)建立的數(shù)據(jù)庫(kù)和表,仍采用的是默認(rèn)的字符集,也即仍為當(dāng)初的西歐字符集,最好,只得忍痛將數(shù)據(jù)庫(kù)刪除,重新以gb2312字符集建立數(shù)據(jù)庫(kù)和表。 再用C#插入中文字符后,一切OK。 再安裝好MySQL后,可以手工或使用配置工具,將my.ini文件中的默認(rèn)字符集改為gb2312,再重新建庫(kù)和表時(shí),不用再在語(yǔ)句中指定字符集,其默認(rèn)設(shè)置也即為gb2312,可以正常顯示中文字符集。 ------------------------------- 1.建立數(shù)據(jù)庫(kù)是一般的語(yǔ)句: create database dbname; 2.在庫(kù)中建表時(shí)語(yǔ)句為: create table tbname(..........)engine=MyISAM character set gbk collate gbk_chinese_ci; 3.程序中連接數(shù)據(jù)庫(kù)的Connection對(duì)象需要寫成Connection con = DriverManaager.getConnection("jdbc:mysql://...user=..&password=...&useUnicode=true&characterEncoding=gbk"); 4.若在終端下用mysql命令向數(shù)據(jù)庫(kù)插入數(shù)據(jù),則在進(jìn)入mysql時(shí)的命令寫成:#mysql --default-character-set=gbk -u ... -p 5.在jsp頁(yè)面的編碼設(shè)置為utf-8. ------------------------------- 我找到一個(gè)方法好像可以解決這個(gè)問題了 在安裝mysql server的時(shí)候,無論是選擇gb2312還是utf-8,都沒有關(guān)系,這些字符集在phpMyAdmin中都可以很好的工作,主要是自己的腳本要正確的顯示中文,可以在php腳本中,連接數(shù)據(jù)庫(kù)之后,正式的數(shù)據(jù)查詢提交之前執(zhí)行下面的語(yǔ)句: $SetCharacterSetSql = "SET NAMES '自己使用的字符集'"; $Recordset1 = mysql_query($SetCharacterSetSql, $conn_Resource) or die(mysql_error()); 然后再執(zhí)行自己的查詢語(yǔ)句,得到的結(jié)果就是正確的了。剛剛試了gb2312和utf-8,都沒有問題。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |