Aller au contenu

Encodage/Transcodage UTF8/iso avec PHP/SQL


slash31

Sujets conseillés

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é par slash31
Lien vers le commentaire
Partager sur d’autres sites

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é par slash31
Lien vers le commentaire
Partager sur d’autres sites

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);

}

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...