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 :

œ en UTF-8


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Points : 31
    Points
    31
    Par défaut œ en UTF-8
    Bonjour,

    Je tourne en rond, je ne trouve pas de solution.

    Je vous explique le problème:

    Je dispose d'une base de données en utf-8 dans laquelle certains mots comportent des œ (typiquement, "cœur"). J'ai une nouvelle colonne dans mes tables que je souhaite remplir. La nouvelle info que je souhaite insérer se trouve dans un fichier (en utf-8 également) dans lequel ces mots sont précisés (afin de savoir où insérer la nouvelle info) mais les "œ" sont écrits "oe" dans cette liste.

    J'ai donc naïvement pensé qu'un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $toto = ereg_replace('oe','œ',$toto);
    suffirait à résoudre mon problème et à faire correspondre les mots de mon fichier texte avec ceux de ma base.

    Mais oh, malheur! Je travaille sous Windows! Et pour obtenir le œ, je tape ALT + 0156, ce qui ne génère pas un œ UTF-8 ni Unicode, mais windows-1252, donc, pas de matching entre ma chaîne nouvellement créée et celle inscrite dans ma base.

    j'ai donc voulu utiliser une variable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $oe = 'œ';
    $oe = utf8_encode($oe);
    mais à ce moment là, le résultat est pire, mon œ disparait complètement.

    Je tourne en rond, je ne trouve aucune solution... On m'a suggéré d'entrer le code unicode précédé de "\u" et donc d'avoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $oe = '\u0153';
    ereg_replace('oe',$oe,$toto);
    mais ça ne fonctionne pas non plus...

    Est-ce qu'ici quelqu'un pourrait m'aider?

  2. #2
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Configure ta bas en UTF8, et ton editeur en UTF8 aussi, et ça devrait passer.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Points : 31
    Points
    31
    Par défaut
    ma base est en UTF-8, mon éditeur aussi

    et ça ne passe pas...

  4. #4
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Tu peux essayer de rajouter ça dans ton my.cnf (section mysqld):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    collation_server=utf8_unicode_ci
    character_set_server=utf8
    skip-character-set-client-handshake

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Points : 31
    Points
    31
    Par défaut
    Je n'ai pas de fichier my.cnf, mais je ne vois pas en quoi cela pourrait m'aider. Je pense que ce dont j'ai besoin c'est soit d'une façon d'entrer le œ en UTF-8 à l'aide de mon clavier (et non en windows-1256) soit d'une technique me permettant d'insérer un caractère unicode, comme il existe "\u0153" dans certains langages de programmation.

    Existe-t-il quelque chose de tel en PHP ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Points : 31
    Points
    31
    Par défaut Résolution
    Pour clore se sujet,je suis finalement passé par unscript Perl pour transformer mes e dans l'o

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($lexoe=~/oe/)
    	{
    		$lexoe=~s/oe/\x{0153}/g;
     
    	}
    Je n'ai donc pas trouvé de solution en PHP mais mon problème a été résolu

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 9
    Points : 11
    Points
    11
    Par défaut si si..
    $str = str_replace('œ', 'œ', $str);

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    probleme du œ c'est qu'il est multi caractere, donc en passant par la fonction mb_ereg_replace ça passe :
    $toto = mb_ereg_replace("œ", "oe",$toto);
    Je précise que j'ai testé , et ça marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Encodage de chaine -> UTF-8
    Par klarky88 dans le forum MFC
    Réponses: 2
    Dernier message: 26/05/2005, 18h13
  2. [io] UTF-8 et Eclipse
    Par michaelbob dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 25/05/2005, 10h27
  3. msXML compatible avec UTF-16
    Par cathar_rhythm dans le forum MFC
    Réponses: 1
    Dernier message: 23/05/2005, 15h42
  4. Mozilla & UTF-8
    Par SergioF dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 11/05/2004, 14h00
  5. [WebForms] Encodage, UTF-8 et accents
    Par alexischmit dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 28/04/2004, 12h21

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