來看看如何解決亂碼問題:
在mysql中默認字符集是latin1,
想要設置字符集為uft-8,可以在 my.cnf 文件中添加以下設置:
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
skip-character-set-client-handshake #此處是忽略客戶端的字符集,使用服務器的設置
(skip語句和client中的default選一個)
當然你可以在建立數據庫是規定字符集:
1 create database db_name default character set utf8 callate utf8-general-ci;
也可以在鏈接數據庫前設置:
set names 'utf8';
重點在紅字上,加了skip-character-set-client-handshake,client里面就不用加default了
show variables like 'characte%';
+--------------------------+----------------------------+
Variable_name | Value |
+--------------------------+----------------------------+
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 |
character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
但是根據以上的配置過了后,mysql就無法啟動了,這是為什么呢?往下看:
在5.1版本時,為了解決中文亂碼問題設置默認字符集為utf8時,在my.ini內的 [mysql] 和 [mysqld] 項中都是寫:
default-character-set=utf8
到了5.5版本, [mysql] 項內可以這么寫, [mysqld] 項內這么寫在啟動MySQL服務時會有1067錯誤,經查詢發現這里必須要這樣寫:
character-set-server=utf8
目前已知5.1和5.5有這么一個不同之處,且是從5.5的安裝版本自動生成的my.ini文件中看出的。配置免安裝的5.5版本還需要進一步的實驗。