您好,登錄后才能下訂單哦!
一般來說,出現中文亂碼,都是客戶端和服務端字符集不匹配導致的原因。(默認未指定字符集創建的數據庫表,都是latinl字符集, 強烈建議使用utf8字符集)
保證不出現亂碼的思想:保證客戶端、服務端、數據庫、表字符集統一
坑:有的時候,cmd或者linux系統字符集問題,其實數據庫是正確的,只是我們執行命令在終端看到的是亂碼而已,這時需要設置linux系統字符集
1、查看liunx系統字符集:cat /etc/sysconfig/i18n
2、vim /etc/sysconfig/i18n
備注:始終牢記,存放數據的是字段,所以編碼最后是以字段的編碼為準,數據庫和表的編碼影響的時候字段的默認值,也就是說在設置了數據庫編碼之后,新建的表在不指定的情況下就會和數據庫編碼相同,而不指定字段的編碼時,字段的編碼和表相同。如果使用 Alter 修改一個表的字符編碼,那原來的字段編碼并不會發生改變,如果需要修改表編碼的同時修改字段的編碼,可以使用 convert
show create database django\G (django 是數據庫名稱)
show create table auth_group\G (auth_group 是表名稱)
ENGINE = InnoDB 該表數據庫引擎是InnoDB
DEFULT CHARSET=utf8 該表字符集是utf8
COLLATE utf8_general_ci 校準規則
show character set;
eg:如果數據庫表字符集是latinl,那么插入數據的時候也要是latinl
方法:set names latinl
insert into student value('飛東')
方法:將下面兩個語句放入一個新建文件中,如mysql.sql
set names Latinl
insert into student value('飛東')
執行這個文件:source mysql.sql
將數據編碼格式保存為utf-8(UTF8不要導入gbk,gbk不要導入UTF8)
set names utf8;
ALTERDATABASEDEFAULTCHARACTERSETCOLLATE utf8_general_ci; 修改數據庫的編碼格式
ALTERTABLEDEFAULTCHARACTERSETCOLLATE utf8_general_ci; 修改表的編碼格式
LOADLOCAL'C:\\utf8.txt'INTOTABLE tb_name; 從文件中導入數據庫
修改完畢之后重啟mysqld服務:service mysqld restart
character_set_client(客戶端)、character_set_connection(連接)、character_set_results(結果) 三者字符集是一致的
ALTERDATABASEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;
ALTERTABLEDEFAULTCHARACTERSETCOLLATE utf8_general_ci;
4、建議表語句:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。