mysql文字亂碼怎么辦 mysql中文亂碼怎樣用代碼解決
mysql出現(xiàn)亂碼問題如何解決?
1、修改安裝文件根目錄下的my.ini文件:\x0d\x0a搜索字段default-character-set,設(shè)置其值為utf8/gbk之一(注意設(shè)置utf8的時(shí)候不能設(shè)成utf-8)\x0d\x0a再去重啟MySQL服務(wù)器\x0d\x0a如果還是出現(xiàn)亂碼,接著執(zhí)行下面操作\x0d\x0a2、修改數(shù)據(jù)庫(kù)編碼\x0d\x0a在安裝目錄的data目錄下找到你出現(xiàn)亂碼的數(shù)據(jù)庫(kù)對(duì)應(yīng)的文件夾(這個(gè)文件夾即是你這個(gè)數(shù)據(jù)庫(kù)存放數(shù)據(jù)的地方),\x0d\x0a進(jìn)入找到db.opt文件(即此數(shù)據(jù)庫(kù)的編碼配置文件),修改值為下面的\x0d\x0adefault-character-set=gbk\x0d\x0adefault-collation=gbk_chinese_ci\x0d\x0a再去重啟MySQL服務(wù)器\x0d\x0a如果還是出現(xiàn)亂碼,接著執(zhí)行下面操作\x0d\x0a3、再不行,備份原數(shù)據(jù)庫(kù)數(shù)據(jù),直接drop掉這個(gè)數(shù)據(jù)庫(kù)\x0d\x0a重新創(chuàng)建數(shù)據(jù)庫(kù)并設(shè)置編碼\x0d\x0acreate database yourDB character set gbk;\x0d\x0a別忘了重啟MySQL服務(wù)器綜上:如果還沒有解決,我也沒轍了。重裝吧,重裝的時(shí)候設(shè)置下編碼三處的編碼要一致
使用MySQL導(dǎo)入數(shù)據(jù)時(shí)出現(xiàn)亂碼的兩種解決方法
使用MySQL導(dǎo)入數(shù)據(jù)時(shí)出現(xiàn)亂碼的兩種解決方法如下:1、添加 –default-character-set
先檢查一下,目標(biāo)數(shù)據(jù)編碼。 56云 分享
使用目標(biāo)庫(kù)編碼導(dǎo)入數(shù)據(jù),如下:
2、修改數(shù)據(jù)庫(kù)編碼
此教程方法必須謹(jǐn)慎使用,需初始化數(shù)據(jù)庫(kù)或?qū)⑵髽I(yè)數(shù)據(jù)庫(kù)技術(shù)可以覆蓋情況下使用,否則導(dǎo)致數(shù)據(jù)庫(kù)出現(xiàn)亂碼
mysql數(shù)據(jù)庫(kù)表里中文亂碼應(yīng)該選哪種編碼?
數(shù)據(jù)庫(kù)中關(guān)于字符集的種類有很多,個(gè)人建議,數(shù)據(jù)庫(kù)字符集盡量使用utf8(utf-8),以使你的數(shù)據(jù)能很順利的實(shí)現(xiàn)遷移,因?yàn)閡tf8字符集是目前最適合于實(shí)現(xiàn)多種不同字符集之間的轉(zhuǎn)換的字符集,盡管你在命令行工具上無法正確查看數(shù)據(jù)庫(kù)中的內(nèi)容,我依然強(qiáng)烈建議使用utf8作為默認(rèn)字符集.如果你想使用gb2312編碼,那么建議你使用latin1作為數(shù)據(jù)表的默認(rèn)字符集,這樣就能直接用中文在命令行工具中插入數(shù)據(jù),并且可以直接顯示出來.而不要使用gb2312或者gbk等字符集,如果擔(dān)心查詢排序等問題,可以使用binary屬性約束 對(duì)編程有影響的主要是客戶端字符集和數(shù)據(jù)庫(kù)字符集(還有一個(gè)服務(wù)器字符集,不知道干什么用的), 數(shù)據(jù)庫(kù)中常用的操作就是保存數(shù)據(jù)和讀取數(shù)據(jù),在這過程中,亂不亂碼和數(shù)據(jù)庫(kù)字符集貌似沒有什么關(guān)系。我們只要保證寫入時(shí)選擇的字符集和讀取時(shí)選擇的字符集一致,即只需保證兩次操作的客戶端字符集一致即可。 \x0d\x0a在MySQL的客戶端上執(zhí)行一次查詢的過程一般是,在客戶端的提示符后面輸入一條SQL語句,回車,然后終端顯示出查詢的結(jié)果。這個(gè)過程中,只有終端和三個(gè)MySQL的系統(tǒng)變量指定了正確的字符集,才能保證我們將一個(gè)正確的SQL語句送到服務(wù)器,然后服務(wù)器返回正確的結(jié)果,并且在終端正確顯示。 \x0d\x0a三個(gè)MySQL的系統(tǒng)變量是: \x0d\x0a1. character_set_client,終端字符集,告訴Server客戶端提交的SQL語句的編碼格式 \x0d\x0a2. character_set_connection,連接字符集,是服務(wù)器翻譯SQL語句時(shí)用到的編碼格式 \x0d\x0a3. character_set_results,返回的結(jié)果集的字符集,是服務(wù)器返回結(jié)果集之前把結(jié)果集轉(zhuǎn)換成的編碼格式 \x0d\x0a在MySQL終端通過執(zhí)行命令 show variables like ‘char%’ 可以查看這幾個(gè)變量的值。這三個(gè)變量通常都設(shè)定為同一種字符集,用命令set names [charset name]就可以修改這三個(gè)變量的值。一般來說,只要你設(shè)定了能夠表示你的數(shù)據(jù)的字符集,你查詢的結(jié)果都可以在終端正確顯示。 \x0d\x0a舉個(gè)例子,使用的表t1是utf8編碼,表中的字段c1繼承了這個(gè)編碼,表創(chuàng)建如下 \x0d\x0amysql create table t1 ( c1 text not null ) character set utf8; \x0d\x0a用的字符是漢字“范”,gbk編碼為B7 B6,utf8編碼為E8 8C 83 \x0d\x0a用下面的SQL語句插入數(shù)據(jù) \x0d\x0amysql insert into t1 values( ‘范’); \x0d\x0aa)如果終端設(shè)置為utf8,并且執(zhí)行了 set names utf8,那么插入到數(shù)據(jù)庫(kù)中的就是“范”這個(gè)字的utf8編碼,這個(gè)過程中MySQL不需要做編碼轉(zhuǎn)換。寫入數(shù)據(jù)庫(kù)的內(nèi)容可以通過執(zhí)行 select hex( c1 ) from t1 得到數(shù)據(jù)的十六進(jìn)制編碼來驗(yàn)證。 \x0d\x0a\x0d\x0ab)如果終端設(shè)置為 utf8,并且執(zhí)行了set names gbk,那么執(zhí)行完這個(gè)插入操作后,寫入的二進(jìn)制數(shù)據(jù)是E9 91 BC,這是“漢字“鑼”的utf8編碼。這是因?yàn)?,終端輸入的“范”用的是utf8編碼,而服務(wù)器以為終端發(fā)送過來的內(nèi)容是gbk編碼,所以在向t1表中插入的時(shí)候進(jìn)行了一次gbk到utf8的轉(zhuǎn)換,結(jié)果當(dāng)然是錯(cuò)誤的。 \x0d\x0a\x0d\x0ac)如果終端設(shè)置為gbk,并且執(zhí)行了set names gbk,那么執(zhí)行完插入操作后,寫入t1的依然是“范”這個(gè)字的utf8編碼。插入過程中,終端輸入的是“范”的gbk編碼B7 B6,服務(wù)器被告知終端發(fā)過來的SQL語句是gbk編碼(由character_set_client指定),所以在插入數(shù)據(jù)前做了一次gbk到utf8的編碼轉(zhuǎn)換。 \x0d\x0a\x0d\x0ad)如果終端設(shè)置為gbk,并且執(zhí)行了set names utf8,那么執(zhí)行完插入操作后,MySQL會(huì)報(bào)出一個(gè)數(shù)據(jù)被截?cái)嗟木妗?shí)際上,輸入終端的是“范”這個(gè)字符的gbk編碼B7 B6,而服務(wù)器被告知客戶端發(fā)過來的SQL語句是utf8編碼,所以在執(zhí)行過程中沒有做轉(zhuǎn)碼,直到插入數(shù)據(jù)的時(shí)候,發(fā)現(xiàn)B7 B6不符合utf8的編碼規(guī)則,給出了警告信息,實(shí)際插入的數(shù)據(jù)是3F 3F,也就是兩個(gè)問號(hào)。 \x0d\x0a\x0d\x0a查詢的時(shí)候是同樣的道理,MySQL也是根據(jù)set names設(shè)定的字符集來對(duì)返回給客戶端的結(jié)果集做相應(yīng)的編碼轉(zhuǎn)換,如果轉(zhuǎn)換的結(jié)果和終端顯示的字符集一致,就能正確顯示,如果不一致就是亂碼。 \x0d\x0a\x0d\x0a結(jié)論是,只要終端的字符集和set names指定的字符集一致就可以讓MySQL在處理過程中執(zhí)行正確的轉(zhuǎn)碼并且正確地顯示。 \x0d\x0a\x0d\x0a另外,如果通過程序操作MySQL數(shù)據(jù)庫(kù), 那么也需要事先執(zhí)行set names命令來指定程序希望輸出的字符集。比如,用程序從一個(gè)utf8編碼的數(shù)據(jù)庫(kù)向另外一個(gè)gbk編碼的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)遷移,在選取源數(shù)據(jù)庫(kù)數(shù)據(jù)之前,需要執(zhí)行set names gbk,才能取到gbk編碼的數(shù)據(jù)。
MySQL數(shù)據(jù)庫(kù)中的中文亂碼如何解決
mysql數(shù)據(jù)亂碼問題可能有以下三種原因:
1.server本身設(shè)定問題,例如還停留在latin1版本;
2.table的語系設(shè)定問題(包含character與collation);
3.客戶端程式(例如php,java)的連線語系設(shè)定問題;
建議使用utf8!!!!
想要避免mysql的中文亂碼問題,可以嘗試以下方法:
1,對(duì)于版本問題,建議去官網(wǎng)更新最新的版本或者比較好用的版本;
2,創(chuàng)建數(shù)據(jù)庫(kù),創(chuàng)建表時(shí)沒有對(duì)字符編碼進(jìn)行設(shè)定會(huì)造成亂碼問題:
創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候:CREATE DATABASE `test`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
建表的時(shí)候 CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3,對(duì)于第三種情況,參考一下方法:
編輯linux服務(wù)器中/etc/my點(diǎn)吸煙f文件,在[mysql]段加入default_character_set=utf8;
如果只是調(diào)試遇到亂碼問題:
在編寫Connection URL時(shí),加上?useUnicode=truecharacterEncoding=utf-8參數(shù);
并且在網(wǎng)頁(yè)代碼中加上一個(gè)"set names utf8"或者"set names gbk"的指令,告訴MySQL連線內(nèi)容都要使用utf-8或者gbk。
utf8或者gbk;
上一篇:mysql配置怎么解決 mysql配置失敗怎么重新配置
欄 目:Mysql
本文標(biāo)題:mysql文字亂碼怎么辦 mysql中文亂碼怎樣用代碼解決
本文地址:http://mengdiqiu.com.cn/a1/Mysql/17187.html
您可能感興趣的文章
- 04-02怎么忽略mysql密碼 mysql怎么取消密碼
- 04-02mysql配置怎么解決 mysql配置失敗怎么重新配置
- 04-02怎么把數(shù)組導(dǎo)入mysql 把數(shù)據(jù)放入數(shù)組
- 04-02mysql企業(yè)版怎么安裝 mysql數(shù)據(jù)庫(kù)企業(yè)版
- 04-02怎么更改mysql到d盤 mysql怎么移到d盤
- 04-02mysql怎么看表大小寫 mysql表大小查詢
- 04-02Mysql怎么關(guān)聯(lián)多個(gè)表 mysql 關(guān)聯(lián)
- 04-02怎么關(guān)閉mysql的自啟 關(guān)閉mysql自啟動(dòng)
- 04-02mysql怎么查語句 mysql數(shù)據(jù)查詢語句


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02怎么忽略mysql密碼 mysql怎么取消密碼
- 04-02mysql文字亂碼怎么辦 mysql中文亂碼怎樣
- 04-02怎么把數(shù)組導(dǎo)入mysql 把數(shù)據(jù)放入數(shù)組
- 04-02mysql配置怎么解決 mysql配置失敗怎么重
- 04-02mysql企業(yè)版怎么安裝 mysql數(shù)據(jù)庫(kù)企業(yè)版
- 04-02怎么更改mysql到d盤 mysql怎么移到d盤
- 04-02mysql怎么看表大小寫 mysql表大小查詢
- 04-02Mysql怎么關(guān)聯(lián)多個(gè)表 mysql 關(guān)聯(lián)
- 04-02mysql怎么查語句 mysql數(shù)據(jù)查詢語句
- 04-02怎么關(guān)閉mysql的自啟 關(guān)閉mysql自啟動(dòng)
隨機(jī)閱讀
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?