真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql亂碼現(xiàn)象及對(duì)字符集的理解

數(shù)據(jù)庫(kù)版本是5.7.17

現(xiàn)象1
Navicat Premium導(dǎo)sqlserver數(shù)據(jù)到MySQL時(shí),發(fā)現(xiàn)一些表只導(dǎo)了表結(jié)構(gòu)沒(méi)有導(dǎo)入數(shù)據(jù),一些表導(dǎo)入了部分?jǐn)?shù)據(jù),一些表數(shù)據(jù)全部導(dǎo)入成功

查找原因:
1.發(fā)現(xiàn)導(dǎo)入成功的數(shù)據(jù)都是沒(méi)有任何中文的
2.在mysql上刪除只導(dǎo)了表結(jié)構(gòu)沒(méi)有導(dǎo)入數(shù)據(jù)的表A,使用Navicat Premium重新表A,查看Navicat Premium導(dǎo)入日志[Err] [Row1] [Imp] 1366 - Incorrect string value: '\xE6\xAD\xA3\xE5\xB8\xB8...' for column 'colunmname1' at row 1
3.在sqlserver上查看select colunmname1 from A發(fā)現(xiàn)都是中文內(nèi)容
至此查出原因:就是因?yàn)楹?jiǎn)體中文的原因,導(dǎo)致沒(méi)有導(dǎo)入成功

解決方法
方法1:在mysql上查詢表A的建表語(yǔ)句show create table A,發(fā)現(xiàn)建表語(yǔ)句最后是CHARSET=latin1,重新修改表A的建表語(yǔ)句把CHARSET=latin1改成CHARSET=utf8,再刪除表A,再重新建立表A,再導(dǎo)表就OK了


方法2:mysql -uroot -p123456
mysql>show variables like 'char%';發(fā)現(xiàn)庫(kù)里面的字符集character_set_database是latin1
修改/etc/my.cnf新增如下配置
[mysqld]下新增character-set-server=utf8
[mysql]下新增default-character-set=utf8
[client]下新增default-character-set=utf8
service mysqld restart
再在mysql上drop導(dǎo)入沒(méi)有完全成功的表,再重新導(dǎo)表(當(dāng)然在個(gè)人實(shí)驗(yàn)中,導(dǎo)入還是繼續(xù)報(bào)錯(cuò)的,因?yàn)閙ysql -uroot -p123456進(jìn)去后沒(méi)有選擇庫(kù),修改后只是新增庫(kù)的字符集會(huì)變成utf8,當(dāng)然選擇了庫(kù)也沒(méi)用,雖然重啟了數(shù)據(jù)庫(kù),但表A對(duì)應(yīng)的庫(kù)如DATABASEA是修改配置之前建立的,它的字符集還是latin1,除非重建DATABASEA把字符集修改為utf8,這樣風(fēng)險(xiǎn)太高,里面的東西都得重新弄過(guò)一次)



現(xiàn)象2
mysql字符集都是utf8了,但是在個(gè)人的windows機(jī)器上使用SQLyogEnt查詢表A,發(fā)現(xiàn)中文亂碼,加上語(yǔ)句后SET character_set_results=gbk后才不亂碼
而在個(gè)人的windows機(jī)器上使用putty登錄mysql服務(wù)器使用mysql>查詢發(fā)現(xiàn)表A不亂碼

原因:
個(gè)人電腦cmd輸入chcp值是936對(duì)應(yīng)簡(jiǎn)體中文
mysql服務(wù)器echo $LANG顯示是zh_CN.UTF-8

在windows上通過(guò)工具SQLyogEnt連接mysql查詢,其實(shí)是在windows上查詢,使用的是windows的字符集gbk,但是mysql字符集是utf8,所以會(huì)亂碼
在windows上通過(guò)putty連接mysql服務(wù)器查詢,其實(shí)就是在mysql服務(wù)器端查詢,mysql服務(wù)器字符集UTF-8,mysql字符集是utf8,所以不會(huì)亂碼



理解
1.mysql安裝后數(shù)據(jù)庫(kù)字符集默認(rèn)是latin1
2.my.cnf修改字符集配置并重啟后,只是對(duì)新增的庫(kù)生效,老庫(kù)還是latin1,老庫(kù)新增表也還是隨老庫(kù)latin1
3.庫(kù)和表的字符集可以不一樣,遇到問(wèn)題評(píng)估下是重導(dǎo)表還是重導(dǎo)庫(kù)

網(wǎng)頁(yè)標(biāo)題:mysql亂碼現(xiàn)象及對(duì)字符集的理解
當(dāng)前路徑:http://weahome.cn/article/jphoos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部