mysql數(shù)據(jù)亂碼問題可能有以下三種原因:
封丘網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
1.server本身設(shè)定問題,例如還停留在latin1版本;
2.table的語系設(shè)定問題(包含character與collation);
3.客戶端程式(例如php,java)的連線語系設(shè)定問題;
建議使用utf8!!!!
想要避免mysql的中文亂碼問題,可以嘗試以下方法:
1,對于版本問題,建議去官網(wǎng)更新最新的版本或者比較好用的版本;
2,創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表時沒有對字符編碼進(jìn)行設(shè)定會造成亂碼問題:
創(chuàng)建數(shù)據(jù)庫的時候:CREATE DATABASE `test`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
建表的時候 CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3,對于第三種情況,參考一下方法:
編輯linux服務(wù)器中/etc/my.cnf文件,在[mysql]段加入default_character_set=utf8;
如果只是調(diào)試遇到亂碼問題:
在編寫Connection URL時,加上?useUnicode=truecharacterEncoding=utf-8參數(shù);
并且在網(wǎng)頁代碼中加上一個"set names utf8"或者"set names gbk"的指令,告訴MySQL連線內(nèi)容都要使用utf-8或者gbk。
utf8或者gbk;
1、修改安裝文件根目錄下的my.ini文件:
搜索字段default-character-set,設(shè)置其值為utf8/gbk之一(注意設(shè)置utf8的時候不能設(shè)成utf-8)
再去重啟MySQL服務(wù)器
如果還是出現(xiàn)亂碼,接著執(zhí)行下面操作
2、修改數(shù)據(jù)庫編碼
在安裝目錄的data目錄下找到你出現(xiàn)亂碼的數(shù)據(jù)庫對應(yīng)的文件夾(這個文件夾即是你這個數(shù)據(jù)庫存放數(shù)據(jù)的地方),
進(jìn)入找到db.opt文件(即此數(shù)據(jù)庫的編碼配置文件),修改值為下面的
default-character-set=gbk
default-collation=gbk_chinese_ci
再去重啟MySQL服務(wù)器
如果還是出現(xiàn)亂碼,接著執(zhí)行下面操作
3、再不行,備份原數(shù)據(jù)庫數(shù)據(jù),直接drop掉這個數(shù)據(jù)庫
重新創(chuàng)建數(shù)據(jù)庫并設(shè)置編碼
create database yourDB character set gbk;
別忘了重啟MySQL服務(wù)器綜上:如果還沒有解決,我也沒轍了。重裝吧,重裝的時候設(shè)置下編碼三處的編碼要一致
A. 字符編碼:
“使用命令行方式登陸到MySQL服務(wù)器, 建立一個數(shù)據(jù)庫,數(shù)據(jù)庫編碼設(shè)為UTF-8。此時,如果直接在命令行窗口使用insert語句插入中文,就遇到類似 ERROR 1406 (22001): Data too long for column 'name' at row 1 錯誤。乍一看,是字段長度引起的問題,但是實際是字符編碼的問題。可是嘗試以下解決方法:
1、在Linux中,使用終端方式登陸MySQL服務(wù)器,運(yùn)行以下命令:
set names utf8;
該命令將終端的字符編碼設(shè)為了UTF-8。此后再插入數(shù)據(jù)庫中的內(nèi)容都會按照UTF-8的編碼來處理。
注意:在Linux中,終端方式中直接插入中文內(nèi)容,可能并不會出現(xiàn)1406錯誤,但是這時插入的數(shù)據(jù)
是按照系統(tǒng)的默認(rèn)編碼進(jìn)行處理。因此對編碼為UTF-8的數(shù)據(jù)庫,在顯示數(shù)據(jù)的地方可能會出現(xiàn)亂碼。
2、在Windows下,命令行窗口不支持UTF-8編碼,所以使用“set names utf8;”不會達(dá)到轉(zhuǎn)化中文的
效果。但是這個問題還是可以解決的:
(1)使用默認(rèn)編碼建立數(shù)據(jù)庫。這種情況下就可以直接輸入中文了,但是相應(yīng)的問題,就是會
失去UTF-8編碼的靈活性。特別是不利于軟件的國際化。
(2)放棄命令行窗口登錄MySQL,使用圖形化客戶端??蛻舳斯ぞ呖梢訫ySQL的官方網(wǎng)站上找到?!?/p>
B. Mysql配置文件:
“在my.ini里找到sql- mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'把其中 的STRICT_TRANS_TABLES,去掉,或者把sql- mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION注釋掉,然 后重啟mysql就ok了”