Version complète: sur le forum Webmaster Hub : Encodage/Transcodage UTF8/iso avec PHP/SQL
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
slash31
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
slash31
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?
slash31
help !!!!!!!!!!!!
slash31
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
Hello,

j'arrive après la bataille désolé, mais j'ai du mal à voir ce que tu cherchais à faire en fait.

CITATION
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.

CITATION
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.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.