Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/10/2007, 15h42   #1
Membre à l'essai
 
Inscription : juin 2007
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 33
Points : 22
Points : 22
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 :
$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 :
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 :
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?
cancrat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2007, 16h44   #2
Membre confirmé
 
Inscription : janvier 2004
Messages : 242
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 242
Points : 245
Points : 245
Configure ta bas en UTF8, et ton editeur en UTF8 aussi, et ça devrait passer.
chaced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2007, 17h15   #3
Membre à l'essai
 
Inscription : juin 2007
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 33
Points : 22
Points : 22
ma base est en UTF-8, mon éditeur aussi

et ça ne passe pas...
cancrat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2007, 17h57   #4
Membre confirmé
 
Inscription : janvier 2004
Messages : 242
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 242
Points : 245
Points : 245
Tu peux essayer de rajouter ça dans ton my.cnf (section mysqld):

Code :
1
2
3
4
 
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
chaced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2007, 09h29   #5
Membre à l'essai
 
Inscription : juin 2007
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 33
Points : 22
Points : 22
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 ?
cancrat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2008, 15h00   #6
Membre à l'essai
 
Inscription : juin 2007
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 33
Points : 22
Points : 22
Par défaut Résolution

Pour clore se sujet,je suis finalement passé par unscript Perl pour transformer mes e dans l'o

Code :
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
cancrat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2008, 11h40   #7
Invité régulier
 
Inscription : novembre 2003
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 9
Points : 9
Points : 9
Par défaut si si..

$str = str_replace('œ', 'œ', $str);
jerkeve est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2008, 18h25   #8
Invité de passage
 
Inscription : avril 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 2
Points : 2
Points : 2
probleme du œ c'est qu'il est multi caractere, donc en passant par la fonction mb_ereg_replace ça passe :
Citation:
$toto = mb_ereg_replace("œ", "oe",$toto);
Je précise que j'ai testé , et ça marche
matt_spirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h54.


 
 
 
 
Partenaires

Hébergement Web