2010-06-24 4 views
0

J'utilise l'API Last.fm pour aller chercher des informations sur des artistes .J'enregistre des informations dans la base de données puis les affiche sur ma page Web. Mais des caractères comme "(double guillemet) sont montrés comme".Weird charactors sur la page HTML

Exemple Artiste Info http://www.last.fm/music/David+Penn

et moi avons la première ligne comme « Producteur, arrangeur, dj et musicien de Madrid-Espagne. Il a sa propre compagnie de disques â € Oezen Recordsâ € et ».

Mine Db est UTF-8 mais je ne sais pas pourquoi cette erreur arrive toujours.

Répondre

1

Vous devriez utiliser UTF-8 jusqu'au bout. Assurez-vous que:

  1. votre connexion à la base de données est UTF-8 (en utilisant mysql_set_charset);

  2. les pages que vous envoyez sont marquées comme UTF-8 (<meta http-equiv="Content-Type" content="text/html;charset=utf-8">); Lorsque vous générez des chaînes à partir de la base de données, vous les codez au format HTML en utilisant htmlspecialchars() et non htmlentities().

htmlentities HTML code tous les caractères non-ASCII, et par défaut suppose que vous passez dans ce octets ISO-8859-1. Donc, si vous le transmettez encodé en UTF-8 (octets 0xE2, 0x80, 0x9C), vous obtiendrez &acirc;&#128;&#156;, au lieu de &ldquo; ou &#8220;. Cela peut être corrigé en transmettant utf-8 comme argument optionnel $charset.

Cependant, il est généralement plus facile d'utiliser simplement htmlspecialchars() à la place, car cela laisse des caractères non-ASCII seuls, comme des octets bruts au lieu de références d'entité HTML. Il en résulte une sortie de page plus petite, donc préférable tant que vous êtes sûr que le code HTML que vous produisez conserve ses informations charset (sur lesquelles vous pouvez généralement compter, sauf dans le contexte comme l'envoi d'extraits HTML dans un courrier ou quelque chose).

htmlspecialchars() n'ont un argument $charset en option aussi, mais la mise à utf-8 n'est pas critique, car cela aboutit à aucun changement de comportement sur la valeur par défaut ISO-8859-1 charset. Si vous produisez des sorties dans des codages multi-octets old-school comme Shift-JIS, vous devez vous soucier de paramétrer correctement cet argument, mais aujourd'hui c'est assez rare car la plupart des gens sensés utilisent UTF-8 de préférence.

2

Cela semble être une erreur de codage de caractères. Confirmez que vous lisez la page Web comme encodage correct et affichez les résultats dans l'encodage correct.

+0

quel encodage devrais-je utiliser? – Arshdeep