中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL--字符編碼和字符集

發布時間:2020-05-22 11:39:12 來源:網絡 閱讀:1471 作者:朱飛東 欄目:MySQL數據庫

前言:

一般來說,出現中文亂碼,都是客戶端和服務端字符集不匹配導致的原因。(默認未指定字符集創建的數據庫表,都是latinl字符集, 強烈建議使用utf8字符集)
  
保證不出現亂碼的思想:保證客戶端、服務端、數據庫、表字符集統一
坑:有的時候,cmd或者linux系統字符集問題,其實數據庫是正確的,只是我們執行命令在終端看到的是亂碼而已,這時需要設置linux系統字符集
1、查看liunx系統字符集:cat /etc/sysconfig/i18n
2、vim /etc/sysconfig/i18n

  
備注:始終牢記,存放數據的是字段,所以編碼最后是以字段的編碼為準,數據庫和表的編碼影響的時候字段的默認值,也就是說在設置了數據庫編碼之后,新建的表在不指定的情況下就會和數據庫編碼相同,而不指定字段的編碼時,字段的編碼和表相同。如果使用 Alter 修改一個表的字符編碼,那原來的字段編碼并不會發生改變,如果需要修改表編碼的同時修改字段的編碼,可以使用 convert
 

一、查看是什么字符集

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

MySQL--字符編碼和字符集
 

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

MySQL--字符編碼和字符集

ENGINE = InnoDB 該表數據庫引擎是InnoDB
DEFULT CHARSET=utf8 該表字符集是utf8
COLLATE utf8_general_ci 校準規則

 

3、查看所有字符集和對應的校準規則
show character set;

MySQL--字符編碼和字符集
 

二、解決方法:

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

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

2、將SQL語句放入文件中,使用source來執行這個文件,插入數據,則不會出現亂碼,原理是和1一樣的,只是放在文件中執行而已

方法:將下面兩個語句放入一個新建文件中,如mysql.sql

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

MySQL--字符編碼和字符集
 

3、從其他文件導入數據庫(避免導入數據有中文亂碼的問題)

將數據編碼格式保存為utf-8(UTF8不要導入gbk,gbk不要導入UTF8)

set names utf8;
ALTERDATABASEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;  修改數據庫的編碼格式
ALTERTABLEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;     修改表的編碼格式
LOADLOCAL'C:\\utf8.txt'INTOTABLE tb_name;    從文件中導入數據庫

 

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

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

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

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

三、常用命令

1、查看默認編碼格式 show variables like "%char%";

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

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

 

2、修改數據庫的編碼格式
ALTERDATABASEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;  

 

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

 

4、通過ALTER 修改庫或者表的字符集,只是對之后插入的數據有效,原來已經存在的數據無法修改,如果需要修改原來帶有數據的字符集,只能通過把原來的數據導出來,再插入到新的已經修改過字符集的表(數據庫)中。

 
 

四、建議

1、中英文環境,linux設置系統字符集為utf8,數據庫服務端,客戶端,數據庫,表都是utf8字符集

 

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

 

3、建議建數據庫語句:

MySQL--字符編碼和字符集
 

4、建議表語句:

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合肥市| 宜丰县| 含山县| 吴川市| 洞口县| 澎湖县| 枣庄市| 汕尾市| 错那县| 望奎县| 汾阳市| 石阡县| 日照市| 阜新市| 密山市| 临城县| 兰州市| 荥经县| 海门市| 波密县| 长乐市| 金昌市| 壶关县| 当阳市| 南木林县| 拜泉县| 津市市| 芒康县| 策勒县| 赣榆县| 莆田市| 杭州市| 亳州市| 沁水县| 四平市| 阿坝| 玛沁县| 镇原县| 宁远县| 南通市| 库车县|