IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

encodage sur caractères spéciaux


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Avril 2007
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Avril 2007
    Messages : 234
    Points : 338
    Points
    338
    Par défaut encodage sur caractères spéciaux
    Bonjour

    J'ai dans une base de données des données mal encodé (voir id 72 et 85) :



    Y aurait il une fonction qui permette de convertir ces caractères mal encodé en caractère lisible? J'ai essayé utf8_decode() mais ça ne fonctionne pas.

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Avril 2007
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Avril 2007
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    En fait l'image ne correspond pas à ce que j'avais vraiment:

    Voici les caractères que j'obtiens réellement:

    é
    ´
    à¶
    etc ...

    J'ai fait une fonction qui permet de convertir mais si quelqu'un a une solution plus automatique, je suis preneur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    function pop($title) {
    	$title = str_replace("é","é",$title);
    	$title = str_replace("´","'",$title);
    	$title = str_replace("ïla","",$title);
    	$title = str_replace("à¶","ö",$title);
    	$title = str_replace("ê","ê",$title);
    	$title = str_replace("ç","ç",$title);
    	$title = str_replace("ê","è",$title);
    	$title = str_replace("â","â",$title);
    	$title = str_replace("è","è",$title);
    	$title = str_replace("ÃÂ","à",$title);
    	$title = str_replace("à±","ñ",$title);
    	$title = str_replace("à¹","ù",$title);
    	$title = str_replace("à¼","ü",$title);
    	$title = str_replace("à¡","á",$title);
    	$title = str_replace("à£o","ã",$title);
    	$title = str_replace("à³","ó",$title);
    	$title = str_replace("à«","ë",$title);
    	$title = str_replace("à´","ô",$title);
    	$title = str_replace("Ãœ","Ü",$title);
    	$title = str_replace("à¤","ä",$title);
    	$title = str_replace("É","É",$title);
    	$title = str_replace("Ä","Ä",$title);
    	$title = str_replace("à¸","ä",$title);
    	$title = str_replace("à¯","ï",$title);
     
    	return $title
    }

  3. #3
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Avant de faire quoi que ce soit, tu devrais vérifier que l'encodage de tes tables soit bon.
    Si tu utilise MySQL, il te faut être en latin1_swedish_ci ce qui signifie aussi ISO-8859-1.

    Attention un changement d'encodage brutal risque d'avoir des effets surprenant, je te conseil donc de faire une copy de tes tables avant

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Avril 2007
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Avril 2007
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Bonjour bonjour

    Oui ma base de donnée est bien une mysql et a bien le bon encodage.

    Le problème venait de PHP. Dans le fichier php.ini, le parametre qui disait à PHP d'etre en iso-8859-15 était commenté (default_charset = "iso-8859-15").
    Pour les nouvelles insertions en base, le problème est réglé.

    Maintenant il faut corriger ce qu'il y a deja en base.

    En fait j'ai lu que quand il y avait des caractères comme ça é , le ƒÂ siginifie qu'il y a eu un double encodage.
    Il faut donc passer une requete de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE nom_table SET `nom_colonne` = REPLACE(nom_colonne,'ƒÂ','');
    et on obtient donc des caractères comme é qui sont décodable avec la fonction utf8_decode() .

    Mais j'ai encore des caractères comme À“ ou Ø (etc) et je ne sais pas ce que c'est.

    Merci

Discussions similaires

  1. problème d'encodage de caractères spéciaux
    Par anti-conformiste dans le forum Langage
    Réponses: 3
    Dernier message: 14/12/2006, 09h42
  2. Réponses: 3
    Dernier message: 24/10/2006, 11h05
  3. Probleme d'encodage des caractères spéciaux
    Par pacoulitou24 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 20/06/2006, 16h47
  4. Réponses: 15
    Dernier message: 24/02/2006, 14h17
  5. [Sybase] filtre sur caractères spéciaux
    Par montelieri dans le forum Sybase
    Réponses: 4
    Dernier message: 07/04/2003, 16h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo