2011-01-25 5 views
1

Peut-être une question très simple, mais je me demandais comment je peux décoder les caractères utf8 en caractères lisibles.UTF8 décodage réel

Par exemple:

L'heure suprême 

Dans

L' Heure suprême

J'ai essayé les éléments suivants:

utf8_encode , utf8_decode And `html_entity_decode($string, ENT_COMPAT, "UTF-8");` 

La sortie ne m'a jamais donné les caractères corrects, par exemple

html_entity_decode($string, ENT_COMPAT, "UTF-8"); returned L'heure suprême 

EDIT: Il était une question stupide, html_entity_decode($string, ENT_COMPAT, "ISO-8859-15"); a fait le tour

+1

Ce sont des ** entités HTML **, pas des caractères UTF-8. –

Répondre

1

Pour que vos résultats soient correctement affichés, vous devrez indiquer la réception, qui est l'encodage utilisé:

header('Content-Type: text/plain; charset=UTF-8'); 

$string = 'L'heure suprême'; 
print html_entity_decode($string, ENT_COMPAT, "UTF-8"); 

La sortie sans nommer explicitement un encodage de charset provoque un comportement indéfini. Plus tôt aujourd'hui, quelqu'un a suggéré a great article by Joel Spolsky sur Unicode et les jeux de caractères. Cela fait une bonne lecture et je vous suggère de "parcourir".

+0

Ce n'est pas pour l'affichage, mais l'appariement sur différentes sources. –

+0

@Paolo Vous êtes encore mieux, en utilisant 'UTF-8', cependant. Votre chaîne encodée 'ISO-8859-1' pourrait se retrouver avec beaucoup de points d'interrogation (' L'heure supr? Me'). –

+0

Ma table est unicode, mais ma source (différents sites iso), j'ai parfois besoin de comparer des noms et ça ne marchera pas si les charachters sont différents. –