第一層因素:
mysql的自身的設定
mysql有六處使用了字元集,分别為:client
、connection、database、results、server
、system。
mysql>show variables like 'character%';
+--------------------------+----------------------------+
| variable_name
| value |
| character_set_client
| utf8 |
| character_set_connection | utf8
|
| character_set_database
| character_set_filesystem | binary
| character_set_results
| character_set_server
| latin1 |
| character_set_system
| character_sets_dir
| /usr/share/mysql/charsets/ |
mysql -uroot -p--default_character_set=gbk; (影響資料的輸入和輸出)
mysql> show variables like 'character%';
| variable_name
| value
| gbk |
| character_set_connection | gbk
| utf8 |
8 rows in set (0.00 sec)
insertinto worker(id,name,sex,birthday,salary,entry_date,resume) values(3,'趙六',0,'1985-09-21',7000,'2012-08-24','一個小小牛');
====>錯誤現象
mysql>insert into worker(id,name,sex,birthday,salary,entry_date,resume) values(3,'趙六',0,'1985-09-21',7000,'2012-08-24','一個小小牛');
error 1366 (hy000): incorrect string value:'\x80\xe4\xb8\xaa\xe5\xb0...' for column 'resume' at row 1
mysql>
====>結論:
讓你的用戶端
伺服器
連接配接 ,都必須設定成一樣 utf8gbk
第二層因素
作業系統語言環境的設定
a)作業系統的總體的語言環境
[mysql01@localhost~]$ cat /etc/sysconfig/i18n
lang="zh_cn.utf-8"
[mysql01@localhost~]$
b)目前使用者的語言環境
linux的作業系統是基于多使用者的作業系統
[mysql01@localhost~]$ env | grep lang*
lang=zh_cn.utf-8
=====>目前使用者的lang設定能屏蔽作業系統語言環境設定
實作:修改目前使用者的語言環境
[mysql01@localhost~]$ env | grep lang
lang=c
[mysql01@localhost~]$
insertinto worker(id,name,sex,birthday,salary,entry_date,resume) values(3,'趙六六',0,'1985-09-21',7000,'2012-08-24','一個小牛');
第三層因素
你的應用軟體的本身
檔案的
存儲問題....
檔案存儲
最常用有2種方式:utf8
code936
==== gbk轉寬位元組的函數....widewinskd函數
gbk轉成寬位元組(unicode2)
備份mysql資料庫
$ mysqldump -uroot -p mydb2 >
2.sql
//恢複msql資料庫
$ mysqldump -uroot -p mydb2 < 2.sql