2010-12-06 2 views
2

J'ai une base de données mysql qui est définie sur utf-8. J'ai mis mon en-tête php: header("Content-Type: text/html; charset=utf-8"); et dans mon html: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />comment puis-je me débarrasser des caractères non reconnus dans utf-8? mysql/php

Quand je reviens tout ce qui a des citations rondes ou apostrophes, ils apparaissent comme des caractères non enregistrés (diamant noir avec un intérieur?).

Si j'exécute utf8_encode() sur la chaîne que je reproduis, c'est bien dans Chrome, mais montre un autre caractère bizarre dans Firefox. Y a-t-il autre chose que je puisse faire sur le site pour améliorer ce travail?

(je l'ai Accession à la db avec suite pro et phpmyadmin)

+0

Comment les données sont-elles insérées dans la base de données? – alex

+0

les données originales que je viens de copier/coller directement dans phpmyadmin de last.fm (la bio d'ici: http://www.last.fm/music/The+National).Je veux que les utilisateurs puissent soumettre des choses, je dois donc avoir une sorte de préparation pour les coller à partir de diverses sources. – Damon

Répondre

1

Assurez-vous que la méthode de communication est en UTF-8. Sinon, il sera converti.

Voir mysql_client_encoding et mysql_set_charset

+0

J'ai mis 'mysql_set_charset ('utf-8', $ connect);' sur ma connexion db, mais 'mysql_client_encoding ($ connect);' retourne toujours latin1 ... – Damon

3

complète utf-8 réglages:

1) .htaccess

AddDefaultCharset utf-8 
PHP_VALUE default_charset utf-8 

2) après mysqli_connect() en appel php cela:

mysqli_query($this->link, 'SET character_set_client="utf8",character_set_connection="utf8",character_set_results="utf8"; '); 

3) votre base de données doit être créée avec le jeu de caractères "collation: utf8"; tous les champs de la table doivent aussi être "collation: UTF8"

4) vos fichiers PHP doivent être créés aussi avec UTF8 charset

+0

merci .. Je vais essayer le htaccess. et peut-être mysqli sur mysql tant que le changement est assez simple – Damon

+0

utiliserait mysqli sur mysql être susceptible de faire une différence ici? Je suis sur une ligne de temps assez serrée en ce moment et préférerais ne pas tout changer – Damon

+0

non, changer de mysql à mysqli dans ce cas ne servira à rien - il donne juste votre moyen plus puissant de gérer la base de données mysql (multy-sélects, etc. .) – oyatek

1

avez-vous essayé d'utiliser htmlentities? Je sais que cela n'affecte pas le codage de caractères, mais il peut se débarrasser du carré noir avec le point d'interrogation. il le fait souvent pour moi ...

$output = htmlentities($db_output); 
echo $output; 
+0

Veuillez formater vos questions correctement. Merci. – Trufa

0

Comment exactement obtenez-vous ces « citations rondes et apostrophes »? Si leur source finale est un document Word ou Outlook, ils seront codés dans Windows-1252. Si vous copiez et collez directement à partir d'un document Word dans une page Web UTF-8, la version UTF-8 du Presse-papiers doit être utilisée et ces caractères apparaissent comme caractères UTF-8 multi-octets. Si ces caractères ont d'abord traversé d'autres fichiers ou pages Web non-UTF-8, il est possible qu'ils soient restés dans le codage à un octet "Smart Quote" de Word, ce qui est invalide dans UTF-8 (et donc le? -in-black- glyphe de diamant). Notez que les pages Web qui prétendent être Latin-1 (ISO-8859-1) sont fréquemment affichées sous Windows-1252, comme 1) les codes de contrôle x80-x9F que la superposition Smart Quotes sont très rarement utilisés, et 2) il est si commun Smart Quotes à mélanger avec du texte. Pour une page UTF-8 qui donne des guillemets et des apostrophes en tant que "caractères non valides", dites au navigateur d'utiliser le codage Windows-1252 à la place pour la page (View> Character Encoding ou quelque chose de similaire). Si ces caractères apparaissent correctement maintenant, les citations intelligentes non traduites sont le problème. Malheureusement, une fois qu'ils sont dans la base de données, seule l'édition manuelle les corrigera.

Questions connexes