UTF-8 problèmes PHP / MySQL
j'ai toujours utilisé L'encodage ISO-8859-1, mais je passe maintenant à L'UTF-8.
malheureusement, je n'arrive pas à le faire fonctionner.
ma base de données MySQL est UTF-8, mon document PHP est encodé en UTF-8, j'ai mis un jeu de caractères UTF-8, mais il ne fonctionne toujours pas.
(ce sont des caractères spéciaux comme æ/ø/å qui ne fonctionne pas)
J'espère que vous pouvez aider!
7 réponses
assurez-vous que la connexion à votre base de données est également en utilisant ce jeu de caractères:
$conn = mysql_connect($server, $username, $password);
mysql_set_charset("UTF8", $conn);
selon la documentation de mysql_set_charset
à php.net:
Note:
This is the preferred way to change the charset. Using mysql_query() to execute
SET NAMES .. is not recommended.
Voir aussi: http://nl3.php.net/manual/en/function.mysql-set-charset.php
vérifiez le jeu de caractères de votre connexion actuelle avec:
echo mysql_client_encoding($conn);
voir aussi: http://nl3.php.net/manual/en/function.mysql-client-encoding.php
si vous avez fait ces choses et ajoutez des caractères bizarres à votre table, vous verrez qu'elle est affichée correctement.
N'oubliez pas de définir le codage de connexion à utf8.
En ext\mysqli ne
$mysqli->set_charset("utf8")
En ext\mysql ne
mysql_set_charset("utf8")
avec d'autres extensions de la base de données, vous pourriez avoir à exécuter la requête comme
SET NAMES 'utf8'
plus de détails sur le codage de connexion dans MySQL
comme d'autres le font remarquer, s'assurer que votre code source est encodé utf-8 aide aussi. Payer attention particulière à ne pas avoir BOM (Byte Order Mark) - il serait envoyé au navigateur avant tout code est exécuté, donc l'utilisation des en-têtes ou des sessions serait impossible.
après la connexion à la base de données, lancez la requête définir les noms UTF8
$db = new db(...);
$db->query('set name utf8');
et ajouter cette balise à l'en-tête
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
avez-vous cette erreur? MySql SELECT UNION mélange illégal de collations erreur? Il vous suffit de définir mysql entier à utf 8 puis
SET character_set_connection = utf8;
essayez ceci après vous être connecté à mysql:
mysql_query("SET NAMES 'utf8'");
et encoder le document PHP dans UTF-8 sans BOM .
j'ai eu le même problème, mais maintenant sa résolu. Voici la solution:
1er: mettre à jour le tableau ur Modifier la TABLE tbl_name Jeu de caractères par défaut utf8 COLLATE utf8_general_ci;
2e: ajoutez ceci dans la section head du code HTML:
en ce qui Concerne Saleha A. Latif
de nos jours AOP est la façon recommandée d'utiliser mysql. Avec cela, vous devez utiliser la chaîne de connexion pour définir l'encodage. Par exemple: "mysql: host= $ host;dbname= $ db;charset=utf8"