2015-10-12 46 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