2010-12-07 8 views
2

J'essaie d'utiliser UTF-8, mais je ne suis pas sûr si je fais tout correctement. J'essaye d'écrire JSON dans une base de données en utilisant PHP, de le récupérer via AJAX et de l'afficher en HTML. Donc, tout d'abord, je garde mes fichiers PHP & JS au format UTF-8.
J'ajoute l'en-tête UTF-8 à mes fichiers PHP.
La table de base de données est créée comme suit:Où puis-je définir mes jeux de caractères, en utilisant JavaScript, PHP et MySQL

CREATE TABLE `achieve` ( 
`id` bigint(20) unsigned NOT NULL, 
`json` mediumtext, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

Lors de l'enregistrement de la base de données, j'utiliser le code PHP suivant:

$json=$_REQUEST["json"]; 
... 
$result = mysql_query($query); 
if ($line = mysql_fetch_assoc($result)) 
    $query = sprintf(
     'UPDATE achieve SET json = "%s" WHERE id=%d ', 
     mysql_real_escape_string($json), $ID 
    ); 
else 
    $query = sprintf(
     'INSERT INTO achieve (id, json) VALUES (%d, "%s") ', 
     $FBID, mysql_real_escape_string($json) 
    ); 
mysql_query($query); 

Quand j'afficher la valeur en HTML, il semble encore être dans le mauvais encodage. Une idée de ce qui me manque?

+1

http://developer.loftdigital.com/blog/php-utf-8-cheatsheet – BalusC

Répondre

0

Désolé pour perdre du temps tout le monde ici ... Je compris la réponse à ma question par la suite! J'avais utilisé escape() en JavaScript avant d'enregistrer mon JSON dans la base de données. Apparemment, cela ne fonctionne qu'avec ASCII, et on devrait utiliser encodeURIComponent() à la place. Maintenant ça marche!

0

Pouvez-vous vérifier que les données sont stockées correctement, en utilisant un navigateur de base de données tel que PHPMyAdmin ou tel? Essayez d'exécuter ces deux requêtes à l'avance:

SET NAMES utf8 
SET CHARACTER SET utf8 
+0

Cela ne semblait pas changer quoi que ce soit. –

+2

Avez-vous vérifié que les données étaient stockées correctement? Vous devriez identifier où dans la chaîne le jeu de caractères est incorrect afin que vous sachiez où le réparer. –

+0

Un conseil sur un moyen facile de dire dans quel format les données sont stockées? –