slash31 Posté 27 Octobre 2008 Posté 27 Octobre 2008 (modifié) Bonjour, voila j'ai un gros probleme d'encodage. Je voudrais utiliser un API de traduction de google pour ma page FAQ. Mes questions sont stockés sur ma base de données MySQL : - Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) - Interclassement des champs de textes : latin1_swedish_ci (soit iso-8859-1) - Charset de mes pages web php : iso-8859-1 Un exemple de champ Mysql qui pose probleme : "J'ai arrêté de..........". Donc a ce qu'il me semble écrit en UTF8 Une phrase que prend mon script de traduction sans probleme : "Vive la facilité" Donc de l'iso Dans mon script j'ai ajouté utf8_decode($data['question_fr']); pour mettre mes champs en ISO, hors le script me ressort, pour l'exemple donné plus haut : "J'ai arr? de...." Cela fait 2 jours que je suis dessus a chercher le problème, de l'aide serais la bienvenue..... Merci d'avance Modifié 27 Octobre 2008 par slash31
slash31 Posté 27 Octobre 2008 Auteur Posté 27 Octobre 2008 (modifié) Je refait les tests en plus clair avec la version FR et traduite : echo $data['question_fr'] : Est-ce que votre Edsylver permet d'arrêter de fumer ? echo utf8_decode($data['question_fr']) : Est-ce que votre Edsylver permet d'arr?r de fumer ? echo traduct($data['question_fr']) : Is your Edsylver can arr? Ter smoking? echo traduct(utf8_decode($data['question_fr'])) : Is your Edsylver can arr? R smoking? Modifié 27 Octobre 2008 par slash31
slash31 Posté 28 Octobre 2008 Auteur Posté 28 Octobre 2008 BOn ben j'ai trouvé la solution, si ça peut etre utile a quelqu'un : virer les accents avant de traduire : function sans_accent($text){ $trans = get_html_translation_table(HTML_ENTITIES); // Place les entités dans un tableau foreach ($trans as $literal =>$entity){ // Crée deux tableaux, un pour la forme accentuée, l'autre sans accents if (ord($literal)>=192){ // Ne concerne pas les caractères comme les fractions, guillemets, etc... $replace[]=substr($entity,1,1); //Récupère le 'E' de la chaîne '&Eaccute' etc. $search[]=$literal; } } //Renvoie la lettre accentuée return str_replace($search, $replace, $text); }
Kioob Posté 28 Octobre 2008 Posté 28 Octobre 2008 Hello, j'arrive après la bataille désolé, mais j'ai du mal à voir ce que tu cherchais à faire en fait. Un exemple de champ Mysql qui pose probleme : "J'ai arrêté de..........". Donc a ce qu'il me semble écrit en UTF8 A moins que tu ais stipulé le contraire dans ton script lors de ta connexion à MySQL, c'est bien de l'ISO que tu récupères. Une phrase que prend mon script de traduction sans probleme : "Vive la facilité" Donc de l'iso Euh non... "donc de l'html", que ce soit ISO XXXX ou UTF-8... Si tu cherchais juste à encoder en HTML tes accents "ISO", c'est htmlentities() qu'il te faut. Maintenant s'il s'agit d'accents Windows (cp1252), il faut le préciser à htmlentities(). Quant à l'UTF-8, il n'est pas nécessaire d'encoder les accents normalement, mais ça ne pose pas vraiment de soucis non plus.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant