2012-12-28 4 views
11

Possible en double:
UTF-8 all the way throughproblèmes PHP MySQL charset utf8

Je développe de nouvelles fonctionnalités sur un site Web que quelqu'un d'autre a déjà développé.

J'ai un problème avec le jeu de caractères.

j'ai vu que la base de données avait quelques tables en UTF8 et certains dans latin1

Je suis en train de convertir toutes les tables en UTF8.

Je l'ai fait pour une table (aussi les champs de cette table sont maintenant utf8), mais n'a pas réussi. J'utilise le mysql connect normal. Je dois mettre n'importe quelle config pour dire qu'il doit se connecter avec utf8 à la DB? Si oui, une sorcière?

Dans mon html j'ai:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

Il ressemble à des lettres et d'autres œuvres afficher la marque de question. Par exemple, il ne peut pas afficher ce « qui est différent de ceci: »

+0

Quels personnages affichent comme point d'interrogation dans DB ? –

+0

ne vous fâchez pas. Donc, vérifiez à nouveau votre question, éditez-la et posez une question. * "Il semble que certaines lettres fonctionnent et d'autres affichent le point d'interrogation." * - de telles phrases ne sont pas utiles. Je parie pour vous qu'ils ne sont pas utiles aussi bien. – hakre

+0

Contactez également la personne dont vous avez obtenu le code pour la documentation. Recherchez également votre question. Par exemple. la partie sur la configuration de caractères mysql a été posée et répondue avant - vous n'avez pas besoin de demander à nouveau, vous pouvez simplement chercher. Par exemple. [Si utiliser "SET NAMES"] (http://stackoverflow.com/q/1650591/367456) et [SET NAMES utf8 dans MySQL?] (Http://stackoverflow.com/q/2159434/367456). – hakre

Répondre

29

Essayez cette

<?php 

    header('Content-Type: text/html; charset=utf-8'); 
?> 

puis dans la connexion

<?php 
$dbLink = mysql_connect($argHost, $argUsername, $argPassword); 
    mysql_query("SET character_set_results=utf8", $dbLink); 
    mb_language('uni'); 
    mb_internal_encoding('UTF-8'); 
    mysql_select_db($argDB, $dbLink); 
    mysql_query("set names 'utf8'",$dbLink); 
?> 
+0

Je l'ai fait et j'ai également dû supprimer toutes les fonctions htmlentities() et utf8_encode() utilisées. Merci – Samuele