2015-10-12 1 views
2

J'Utf8 dans la base de données MySQLUTF8 dans la base de données - default_charset de php.ini

maintenant il montre

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

J'ai le ci-dessous dans le code php

mysqli_query("SET NAMES 'utf8'"); 

et

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

Depuis que j'ai défini utf8 i base de données de n, je prévois d'enlever

mysqli_query("SET NAMES 'utf8'"); 

et

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

à partir du code PHP

On m'a dit que je peux supprimer le code ci-dessus, mais je dois ajouter

mysqli_set_charset($con,"utf8"); 

dans le code PHP.

Au lieu d'ajouter mysqli_set_charset($con,"utf8") dans le code, puis-je mettre

default_charset = "UTF-8" 

à php.ini?

my.cnf est

[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

Vous mélangez les fonctions mysql_ et mysqli_ dans votre question. Ils ne devraient pas être mélangés comme ça. Si c'est une faute de frappe, corrigez votre question. – Machavity

+0

veuillez noter que le 'UTF8' standard dans MySQL est ** PAS ** le jeu complet de caractères UTF8. Si vous voulez/avez besoin du jeu complet de caractères UTF8 enregistré dans votre base de données, vous devez utiliser 'UTF8mb4' dans MySQL. – Martin

+0

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

Répondre

2

Au lieu d'ajouter mysqli_set_charset($con,"utf8") dans le code, puis-je mettre default_charset = "UTF-8" dans php.ini?

Non, cela n'affecte pas le jeu de caractères de la base de données.

Et même les MySQL extension settings n'offrent rien à cet égard - et ne le font pas those for MySQLi.

est un paramètre par connexion après tout. Mais si vous mettez votre code pour établir la connexion à la base de données dans un fichier que vous incluez partout où cela est nécessaire, cela devrait suffire.

+0

so, mysqli_set_charset ($ con, "utf8"); est un must have après l'établissement de la connexion à la base de données? – Jeff

+0

Sauf si vous pouvez configurer directement la valeur par défaut dans les paramètres du serveur MySQL: Oui. (https://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_character_set_client) – CBroe

+0

Dans my.cnf, j'ai [client] default-character-set = utf8 et [mysqld ] default-character-set = utf8 – Jeff

0

La question est en référence à MySQL, donc la configuration d'une configuration dans php.ini ne va pas aider beaucoup dans ce cas. Ce que je suggère est de mettre à jour le fichier my.cnf dans une base MySQL

plus sur my.cnf paramètres peuvent être trouvés here

[client] 
default-character-set=utf8 

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

je pris la partie au-dessus de ce thread, qui traite de la même question, mais pour PHP et MySQL. J'espère que cela aide!

+0

J'ai mis à jour ma question avec my.cnf si j'ai ces paramètres dans my.cnf, puis-je éviter d'avoir mysqli_set_charset ($ con, "utf8"); dans le code? – Jeff