1. 程式人生 > >mysql防止中文亂碼小方法

mysql防止中文亂碼小方法

包括 英文 中文亂碼 適合 字符串 根據 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),然後再執行更新語句,或者插入中文。

  1. 在要執行的sql文件裏,第一條添加 set names latin1;
  2. 通過mysql指定編碼導入

Mysql –uroot –p’密碼’ --default-charset-set=latin1 test < test.sql;

三.mysql服務端

  1. 在配置文件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

  1. 導出庫和表的創建語句 將編碼修改為utf8
  2. 導出所有數據
  3. 刪除所有庫和數據
  4. 利用新的建表和建庫的語句創建新的庫和表
  5. 導入數據

mysql防止中文亂碼小方法