2015-10-12 45 views
2

我在MySQL數據庫設置UTF8UTF8數據庫 - 設置DEFAULT_CHARSET在php.ini

現在它顯示

+--------------------------+----------------------------+ 
| 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/ | 
+--------------------------+----------------------------+ 


+----------------------+-----------------+ 
| Variable_name  | Value   | 
+----------------------+-----------------+ 
| collation_connection | utf8_general_ci | 
| collation_database | utf8_unicode_ci | 
| collation_server  | utf8_unicode_ci | 
+----------------------+-----------------+ 

我有下面的PHP代碼

mysqli_query("SET NAMES 'utf8'"); 

$con = mysqli_connect('host','user','pass','database'); 
mysqli_query($con,"SET NAMES 'utf8'"); 

由於我設置了utf8我ñ數據庫,我計劃從PHP代碼

有人告訴我,我可以去掉上面的代碼刪除

mysqli_query("SET NAMES 'utf8'"); 

mysqli_query($database,"SET NAMES 'utf8'"); 

,但我需要添加

mysqli_set_charset($con,"utf8"); 

在PHP代碼中。

而是在代碼中添加mysqli_set_charset($con,"utf8")的,我可以在php.ini設置

default_charset = "UTF-8" 

的my.cnf是

[client] 
default-character-set=utf8 

[mysqld] 
default-character-set=utf8 
default-collation=utf8_general_ci 
character-set-server=utf8 
collation-server=utf8_unicode_ci 
init-connect='SET NAMES utf8' 
+0

你在混合'mysql_'和'mysqli_'函數在你的問題。他們不應該這樣混合。如果是拼寫錯誤,請解決您的問題。 – Machavity

+0

請注意,MySQL中的標準'UTF8'是** NOT **完整的UTF8字符集。如果你想/需要保存在數據庫中的完整的UTF8字符集,你需要在MySQL中使用'UTF8mb4'。 – Martin

+0

查看https://stackoverflow.com/questions/279170/utf-8-all-the-way-through – Martin

回答

2

而是在代碼中添加mysqli_set_charset($con,"utf8")的,我可以設置在php.ini default_charset = "UTF-8"

不,這並不影響數據庫連接字符集。

甚至MySQL extension settings在這方面沒有提供任何 - those for MySQLi也沒有。

畢竟每個連接設置。

但是,如果你把你的代碼建立數據庫連接到一個你需要的地方包含的文件中,那應該就足夠了。

+0

so,mysqli_set_charset($ con,「utf8」);是建立數據庫連接後必須具備的嗎? – Jeff

+0

除非您可以直接在MySQL服務器設置中配置默認​​值:是的。 (https://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_character_set_client) – CBroe

+0

my.cnf,我有[client] default-character-set = utf8和[mysqld ] default-character-set = utf8 – Jeff

0

問題在於引用MySQL,因此在php.ini中設置配置在這種情況下不會有太大幫助。我的建議是更新my.cnf文件在MySQL

更多的my.cnf設置可以發現here

[client] 
default-character-set=utf8 

[mysqld] 
character-set-server=utf8 
default-character-set=utf8 
default-collation=utf8_unicode_ci 
character-set-client = utf8 

我把上面的部分從這個thread,其中討論了同樣的問題,但對於PHP和MySQL。 希望這有助於!

+0

如果我在my.cnf中有這些設置,我已經使用my.cnf 更新了我的問題,是否可以避免使用mysqli_set_charset($ con,「utf8」);在代碼中? – Jeff