因爲歷史的緣由,mysql在5.5.3之前的版本提供的utf8字符集並不是是真正的utf8,它只是UTF8的一個子集,提供有限的utf8支持。從mysql5.5.3開始,mysql更改了內部細節實現,增長了一個utf8mb4字符集,支持真正的unicode,長度由以前的最大3位延伸到4位,好比表情符之類的字集終於能夠貯存到mysql。php
不管mysql提供的是舊版本utf8字集仍是utf8mb4,php 都能正確處理。mysql
若是你的mysql版本支持utf8mb4,那麼最好在my.cnf中增長以下設置:git
[client]
default-character-set = utf8mb4 github[mysql]
default-character-set = utf8mb4 sql[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'code
在mysql中,變量名分隔符使用-或 _都是正確的,最好統一。server
其它地方參考這裏。ci