Convertir un série de caractères pour le charset UTF-8 - HTML/CSS - Programmation
Marsh Posté le 14-08-2009 à 15:27:14
htmlentities ne convertit absolument pas en utf-8.
Faut déjà voir $message en quoi il est encodé. Sinon faudra utiliser la fonction utf8_encode()
Marsh Posté le 14-08-2009 à 18:38:09
J'ai tenté avec cette ligne de code :
Code :
|
les caractères deviennent "illisibles"...
et j'ai une problème de magic_quotes... (un slash devant les apostrophes).
...
Au fait $message est encodé comme ceci :
é = é
à = à
è = è
û = û
ö = ö
etc.
Marsh Posté le 14-08-2009 à 20:43:24
Comment ça illisible ? Un point d'interrogation ? Un é ? Des trucs chinois ?
Marsh Posté le 15-08-2009 à 14:44:57
Donc t'as bien de l'utf-8. Mais affiché dans un environnement iso-8859-1. Vérifie tes entêtes HTTP
Marsh Posté le 15-08-2009 à 16:28:57
Les balises méta indiquent bien un charset UTF-8
Code :
|
Je ne comprends pas... ?
Marsh Posté le 15-08-2009 à 17:48:57
Et en virant l'utf8_encode (qui devrait donc ne pas être là si la page qui post la requête est déjà en utf-8) ?
Marsh Posté le 15-08-2009 à 20:59:27
Il n'y a plus de codage, on obtient à nouveau un codage "neutre" où les lettres ne sont plus codées... ("élèments" au lieu de "élèments" en UTF-8).
Marsh Posté le 15-08-2009 à 21:03:42
Je crois que tu mixes tout un tas de notions là
Vire tout tes utf8_decode et htmlentities. Occupe-toi juste de déclarer le bon encoding (dans la meta ou dans l'entête HTTP), et ça roule.
Y'a pas d'encodage "neutre."
Marsh Posté le 19-08-2009 à 22:13:37
Le sujet est parti "en vrille", je crois.
il s'agisais simplement de convertir un texte écrit de "élèments" à "élèments". C'est tout.
Marsh Posté le 28-08-2009 à 13:24:34
Bonjour,
Je crois qu'il faut tout simplement indiqué le charset de la chaine d'origine.
Donc essayer :
$message = (htmlentities($message, NULL, "CP1252" )); |
Le résultat devrait être la transformation du "é" en "eacute;", etc, ce qui premettra d'incoporer ce texte dans une page contenant de UTF-8. N.B. Si ca ne marche pas, essyer "ISO8859-1" au lieu de "CP1252".
Marsh Posté le 06-10-2009 à 15:56:45
J'ai eu beaucoup de mal à comprendre le UTF-8 puis j'ai réalisé un fichier texte qui converti automatiquement les caractères au format UTF-8. Cela doit prendre des ressources serveur mais j'ai pas trouvé mieux pour le moment ; l'avantage c'est qu'il est possible de la modifier en temps réel pour toutes les conversions. Il faudra le compléter et approfondir le travail...
Code :
|
Sur la page courante on intègre la ligne de code suivante :
Code :
|
On peut également faire un fichier dans l'autre sens ou convertir les ISOs vers UTF-8 et vice et versa ou d'autre conversion.
Avec un peu de travail, un seul fichier texte suffit à un site ; voir un seul fichier pour plusieurs sites (avec file_get_contents ?)
Marsh Posté le 06-10-2009 à 16:52:53
Evite à tout prix autant de str_replace. Met tous tes trucs dans un tableau, et utilise strtr
Marsh Posté le 06-10-2009 à 16:53:26
Et pis en fait y'a pas besoin de tes fonctions pour ces caractères-là, un preg_replace suffit + une fonction custom
Marsh Posté le 06-10-2009 à 16:55:49
Du genre :
Code :
|
Et on utilise preg_replace :
Code : |
Marsh Posté le 14-08-2009 à 15:14:06
J'ai réalisé un forum qui fonctionne bien, au moment d'enregistrer les messages je souhaite convertir les caractères pour le charset UTF-8.
J'utilise la donc la fonction htmlentities() de cette façon :
Les caractères ne sont pas converties ? Existe t-il une méthode ?
Merci
Message édité par alx067 le 14-08-2009 à 15:14:29