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!

11
demandé sur Bo Persson 2011-01-07 11:25:10

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.

20
répondu Rene Terstegen 2011-01-07 08:56:01

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.

9
répondu Mchl 2011-01-07 08:55:21

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" /> 
2
répondu Edmhs 2011-01-07 08:33:13

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;
1
répondu Gerard Banasig 2011-01-07 08:28:25

essayez ceci après vous être connecté à mysql:

mysql_query("SET NAMES 'utf8'");

et encoder le document PHP dans UTF-8 sans BOM .

1
répondu Diablo 2011-01-07 08:30:37

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

1
répondu Saleha A.Latif 2013-04-25 07:22:02

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"

1
répondu kynnysmatto 2015-11-17 00:53:09