Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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/12/2010, 17h37   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 1
Points : 1
Par défaut Convertir Unicode en UTF-8

Bonjour,

je cherche à convertir les caractères unicode d'une chaîne vers de l'utf8 sachant que la fonction chr de php ne me retourne pas le bon caractère.

Pour illustrer mon exemple, je veux dans la chaine suivante remplacer la partie en rouge par sa valeur lisible é :

Je n'ai pas code à poster dans la mesure où toutes les solutions que j'ai pu utiliser n'ont mené à rien.

Merci d'avance

WhaX!
WhaX4Life est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 18h09   #2
Invité de passage
 
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 1
Points : 1
Je m'auto reply, histoir que ça puisse servir à quelqu'un.

La solution est la suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Convertit de l'unicode en utf8
function unicode2utf8($c)
{
    if ($c < 0x80) {
        return chr($c);
    } else if ($c < 0x800) {
        return chr(0xc0 | ($c >> 6)) . chr(0x80 | ($c & 0x3f));
    } else if ($c < 0x10000) {
        return chr(0xe0 | ($c >> 12)) . chr(0x80 | (($c >> 6) & 0x3f)) . chr(0x80 | ($c & 0x3f));
    } else if ($c < 0x200000) {
        return chr(0xf0 | ($c >> 18)) . chr(0x80 | (($c >> 12) & 0x3f)) . chr(0x80 | (($c >> 6) & 0x3f)) . chr(0x80 | ($c & 0x3f));
    }
    return false;
}
 
// Convertit une chaîne unicode en utf8
function toUtf8($str) {
    return utf8_decode(preg_replace('#\\\u([0-9A-F]{4})#ie', 'unicode2utf8(0x$1)', $str));
}
Au final ça marche bien pour le é, mais d'autres caractères genre Ö ne fonctionne pas !

Si quelqu'un a une solution pour améliorer suis prenneur^^
WhaX4Life est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 01h24   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
c'est de l'utf-16, avec json_decode ca le fait, puisque les données doivent venir de JavaScript

Code :
echo json_decode('"\u00e9cole"');
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 17h40   #4
Invité de passage
 
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 1
Points : 1
J'aurais dû y penser dans la mesure où elles proviennent d'un tableau json...(graph api de facebook).

Bref, je te remercie voilà qui simplifie la chose!

Je note le sujet comme résolu.
WhaX4Life 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 08h03.


 
 
 
 
Partenaires

Hébergement Web