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

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

MySQL--字符編碼和字符集

前言:

一般來(lái)說(shuō),出現(xiàn)中文亂碼,都是客戶端和服務(wù)端字符集不匹配導(dǎo)致的原因。(默認(rèn)未指定字符集創(chuàng)建的數(shù)據(jù)庫(kù)表,都是latinl字符集, 強(qiáng)烈建議使用utf8字符集)

保證不出現(xiàn)亂碼的思想:保證客戶端、服務(wù)端、數(shù)據(jù)庫(kù)、表字符集統(tǒng)一
坑:有的時(shí)候,cmd或者linux系統(tǒng)字符集問(wèn)題,其實(shí)數(shù)據(jù)庫(kù)是正確的,只是我們執(zhí)行命令在終端看到的是亂碼而已,這時(shí)需要設(shè)置linux系統(tǒng)字符集
1、查看liunx系統(tǒng)字符集:cat /etc/sysconfig/i18n
2、vim /etc/sysconfig/i18n


備注:始終牢記,存放數(shù)據(jù)的是字段,所以編碼最后是以字段的編碼為準(zhǔn),數(shù)據(jù)庫(kù)和表的編碼影響的時(shí)候字段的默認(rèn)值,也就是說(shuō)在設(shè)置了數(shù)據(jù)庫(kù)編碼之后,新建的表在不指定的情況下就會(huì)和數(shù)據(jù)庫(kù)編碼相同,而不指定字段的編碼時(shí),字段的編碼和表相同。如果使用 Alter 修改一個(gè)表的字符編碼,那原來(lái)的字段編碼并不會(huì)發(fā)生改變,如果需要修改表編碼的同時(shí)修改字段的編碼,可以使用 convert
 

創(chuàng)新互聯(lián)公司自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元紫陽(yáng)做網(wǎng)站,已為上家服務(wù),為紫陽(yáng)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

一、查看是什么字符集

1、查尋數(shù)據(jù)庫(kù)是什么字符集
show create database django\G (django 是數(shù)據(jù)庫(kù)名稱)

MySQL--字符編碼和字符集
 

2、查尋表是什么字符集
show create table auth_group\G (auth_group 是表名稱)

MySQL--字符編碼和字符集

ENGINE = InnoDB 該表數(shù)據(jù)庫(kù)引擎是InnoDB
DEFULT CHARSET=utf8 該表字符集是utf8
COLLATE utf8_general_ci 校準(zhǔn)規(guī)則

 

3、查看所有字符集和對(duì)應(yīng)的校準(zhǔn)規(guī)則
show character set;

MySQL--字符編碼和字符集
 

二、解決方法:

1、插入數(shù)據(jù)的時(shí)候,先設(shè)置客戶端插入字符集和數(shù)據(jù)庫(kù)建表相同的字符集
eg:如果數(shù)據(jù)庫(kù)表字符集是latinl,那么插入數(shù)據(jù)的時(shí)候也要是latinl
方法:set names latinl
insert into student value('飛東')

MySQL--字符編碼和字符集
MySQL--字符編碼和字符集
 

2、將SQL語(yǔ)句放入文件中,使用source來(lái)執(zhí)行這個(gè)文件,插入數(shù)據(jù),則不會(huì)出現(xiàn)亂碼,原理是和1一樣的,只是放在文件中執(zhí)行而已

方法:將下面兩個(gè)語(yǔ)句放入一個(gè)新建文件中,如MySQL.sql

set names Latinl
insert into student value('飛東')
執(zhí)行這個(gè)文件:source mysql.sql

MySQL--字符編碼和字符集
 

3、從其他文件導(dǎo)入數(shù)據(jù)庫(kù)(避免導(dǎo)入數(shù)據(jù)有中文亂碼的問(wèn)題)

將數(shù)據(jù)編碼格式保存為utf-8(UTF8不要導(dǎo)入gbk,gbk不要導(dǎo)入U(xiǎn)TF8)

set names utf8;
ALTERDATABASEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;  修改數(shù)據(jù)庫(kù)的編碼格式
ALTERTABLEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;     修改表的編碼格式
LOADLOCAL'C:\\utf8.txt'INTOTABLE tb_name;    從文件中導(dǎo)入數(shù)據(jù)庫(kù)

 

4、永久修改默認(rèn)客戶端編碼格式(修改my.cnf配置文件,針對(duì)MySQL 5.5版本以上)

MySQL--字符編碼和字符集
MySQL--字符編碼和字符集
 

5、永久修改默認(rèn)服務(wù)端編碼格式(修改my.cnf配置文件,針對(duì)MySQL 5.5版本以上)

MySQL--字符編碼和字符集
MySQL--字符編碼和字符集
修改完畢之后重啟mysqld服務(wù):service mysqld restart
 

三、常用命令

1、查看默認(rèn)編碼格式 show variables like "%char%";

MySQL--字符編碼和字符集
MySQL--字符編碼和字符集
MySQL--字符編碼和字符集

character_set_client(客戶端)、character_set_connection(連接)、character_set_results(結(jié)果) 三者字符集是一致的

 

2、修改數(shù)據(jù)庫(kù)的編碼格式
ALTERDATABASEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;  

 

3、修改表的編碼格式
ALTERTABLEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;  

 

4、通過(guò)ALTER 修改庫(kù)或者表的字符集,只是對(duì)之后插入的數(shù)據(jù)有效,原來(lái)已經(jīng)存在的數(shù)據(jù)無(wú)法修改,如果需要修改原來(lái)帶有數(shù)據(jù)的字符集,只能通過(guò)把原來(lái)的數(shù)據(jù)導(dǎo)出來(lái),再插入到新的已經(jīng)修改過(guò)字符集的表(數(shù)據(jù)庫(kù))中。

 
 

四、建議

1、中英文環(huán)境,linux設(shè)置系統(tǒng)字符集為utf8,數(shù)據(jù)庫(kù)服務(wù)端,客戶端,數(shù)據(jù)庫(kù),表都是utf8字符集

 

2、無(wú)論是查尋還是插入,都先用set names utf8 先設(shè)置一下字符集

 

3、建議建數(shù)據(jù)庫(kù)語(yǔ)句:

MySQL--字符編碼和字符集
 

4、建議表語(yǔ)句:

MySQL--字符編碼和字符集
4、建議表語(yǔ)句:


網(wǎng)站標(biāo)題:MySQL--字符編碼和字符集
分享地址:http://weahome.cn/article/jdeeoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部