Remplacement automatique des caractères

Ce sujet est résolu
Default
,

Bonjour,

je souhaiterai savoir comme je peux faire un code pour remplacer les caractères "é,è,à,ç,ê,ë,â,ä...etc" avant l'envoi dans la base de donnée.

En effet, même si mon site est en utf-8 (affichage, enregistrement) j'ai quand même un problème de caractères.

16 Réponse

Default
,

Je bosses sous notepad++. Le mysql_query("SET NAME 'utf-8'") marche pas.

Dans le header bug car je lance une session_start qui bug aussi, mais bon, sinon c'est pas grave y'a juste à remplacer les caractères, je vais me faire un BBCode plus simple.

Merci quand même :).

Default
,

Non, je vais essayer, merci.

Default
,

Cela ne marche pas.

Default
,

Hum enfin attend je crois que j'ai confondu deux fonctions alors je suis pas sur que ça marche...

Default
,

Lors de l'enregistrement, tu utilises une fonction du genre addslashes, htmlentities, htmlspecialchars pour protégé tes valeurs ?

Default
,
function convert_in_utf8($string){
    //bon caracteres
    $GoodCharaters = array ("¡","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","*","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","×","÷","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","ø","ù","ú","û","ü","ý","þ","ÿ");
    //Mauvais caractères
    $BadCharacters = array ("¡","¢","£","¤","Â¥","¦","§","¨","©","ª","«","¬","Â*","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","×","÷","À","Á","Â","Ã","Ä","Ã…","Æ","Ç","È","É","Ê","Ë","ÃŒ","Í","ÃŽ","Ï","Ð","Ñ","Ã’","Ó","Ô","Õ","Ö","Ø","Ù","Ú","Û","Ãœ","Ý","Þ","ß","à ","á","â","ã","ä","Ã¥","æ","ç","è","é","ê","ë","ì","Ã*","î","ï","ð","ñ","ò","ó","ô","õ","ö","ø","ù","ú","û","ü","ý","þ","ÿ");
    // remplacer les mauvais caracatères par les bons et encoder le tout en utf8
    $string = utf8_encode(str_replace($BadCharacters ,$GoodCharaters ,$string));
    return $string;
    }

Pour le problème de caractère vérifie que apache tourne bien en utf8.

Sinon tu peux utilisé htmlentities() avant insertion dans ta base.

Dans PHP manuel :

htmlentities() est identique à la fonction htmlspecialchars(), sauf que tous les caractères qui ont des équivalents en entités HTML sont effectivement traduits.

Si vous voulez réaliser l'opération inverse, vous devez utiliser la fonction html_entity_decode().

Default
,

Merci jbou43, j'essai ça dans l'aprèm !

Default
,

$string c'est la variable à qui je fais la conversion ?

1
,

Normalement tu es pas censé avoir de souci, essaie quand tu te connecte à ta bdd de mettre un

mysql_query("SET NAMES 'utf8'");

Normalement ça évite les soucis d'enregistrement des caractères accentués

Default
,

Marche pas :/.

Sinon, je remplace manuellement les accents par leur caractères en php.

ex: é = é etc...

4307
,

Met un header ?

header('Content-type: text/html; charset=utf-8');

Default
,

a tu les accents correctement dans ta base de donnée ?

Regarde avec phpmyadmin.

Default
,

Si j'enregistre mes news de ce type:

"Aujourd'hui à la une du journal....."

Y'aura le signe qui veut dire "à" en badcaracter.

Si j'enregistre:

"Aujourd'hui à la une du journal....."

J'aurais le "à".

Je vais essayer le header mais je pense que ça risque de finir pareil x), en sa marche pas.

Default
,

Donc on fait un récap.

Tu a bien mi le mysql_query("SET NAMES 'utf8'"); pour dire à sql que tu est en utf8.

  • et cette petite ligne pour dire au navigateur que ta page est en utf-8 header('Content-type: text/html; charset=utf-8');

Tu bosse avec quel logiciel ?

Default
,

notepad++ bosse en ANSI par default, Regarde dans le menu puis encodage si ta page et en utf8 si non converti la en utf-8. et après retente l'insertion de donnée dans ta base.

Je suis pas sur que cela règle ton problème mais tu peux tenter

Par contre fais attention notpad++ à tendance à convertir des fichier utf-8 en ANSI tout seul.

C'est pour ça que je suis passé à netbeans que je te conseille vraiment

Default
,

Je télécharge Netbeans je vais essayer :), merci.