mysql防止中文亂碼小方法
阿新 • • 發佈:2018-03-28
包括 英文 中文亂碼 適合 字符串 根據 color eat 程序
mysql字符集介紹
包括兩部分 字符集CHARACTER和校對規則COLLATION
字符集是用來定義mysql字符串存儲的方式
校對規則是定義比較字符串的方式
如果數據庫存的是多過語言,就用utf8,每個漢字三個字節
如果只需支持中文,就用gbk,中英文都是占用2字節
查看mysql的字符集
show character set; 簡寫: show char set;
查看現有數據庫編碼設置
mysql> show variables like ‘%chara%‘; | character_set_client |utf8 客戶端 | | character_set_connection | utf8 客戶端 連接字符集 | | character_set_database | utf8 數據庫字符集 | | character_set_filesystem | binary | | character_set_results | utf8 客戶端 返回結果字符集 || character_set_server | utf8 服務器字符集 | | character_set_system | utf8 |
如果mysql不指定的話,客戶端的字符集一般和系統一致
防止亂碼方法小結
不亂碼的思想:
Linux系統 客戶端 服務端 庫 表 程序
需要控制以上流程編碼一致,防止亂碼
查看 編碼設置:
Show global variables like ‘%chara%’;
一.Linux系統
[root@www ~]# cat /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
二.mysql客戶端
登錄mysql 先做set names latin1; 這裏的字符設置,要根據要插入表的字符編碼,查看方法:(show create table tablename \G),然後再執行更新語句,或者插入中文。
- 在要執行的sql文件裏,第一條添加 set names latin1;
- 通過mysql指定編碼導入
Mysql –uroot –p’密碼’ --default-charset-set=latin1 test < test.sql;
三.mysql服務端
- 在配置文件my.cnf裏指定編碼 重啟生效 永久生效
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8(5.1之前的版本) character-set-server=uft8 (適合5.5) 中文還是選擇utf8
四.庫和表
創建庫和表的時候指定默認的字符編碼
CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci; create table my_table (name varchar(20) not null default ‘‘) default charset utf8;
對於已有數據的表,修改字符集的思路
例如:latin1=>utf8
- 導出庫和表的創建語句 將編碼修改為utf8
- 導出所有數據
- 刪除所有庫和數據
- 利用新的建表和建庫的語句創建新的庫和表
- 導入數據
mysql防止中文亂碼小方法