PHP et UTF-8


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3602
Inscription: 10 Fév 2004

PHP et UTF-8

Message le Dim Fév 08, 2009 16:05

Bonjour,

Je travaille actuellement sur deux sites en UTF-8.

Le premier, pas de problème. Le second: une section est problématique au niveau de l'encodage.

J'y fais des manipulations sur des chaînes de caractères. Je constate que les caractères accentués passent mal avec strlen et strtolower, m'obligeant à recourir à mb_strlen et mb_strtolower. Pire, un accès au premier caractère d'une chaîne par $chaine[0] me retourne un caractère erroné, m'obligeant à utiliser mb_substr...

Pouvez-vous me dire si je m'y prends mal (par exemple: un paramètre de configuration PHP qui m'aurait échappé) ou si cette manière de procéder est normale?

D'avance, je vous remercie.


antinomx
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 277
Inscription: 23 Aoû 2008

Re: PHP et UTF-8

Message le Dim Fév 08, 2009 16:13

Salut,

T'as réussi à localiser à cause de quoi cette section est problématique ? Par rapports aux autres ? C'est quoi son fonctionnement ? Inclusion d'un fichier (peut être encodé différemment) ? Récupération de données externes au site ?
En général utf8_encode() et assimilées sont tes amies dans ces cas la...


Toma
WRInaute discret
WRInaute discret
 
Messages: 208
Inscription: 18 Jan 2006

Re: PHP et UTF-8

Message le Dim Fév 15, 2009 2:51

Ça me parait normal que tu doives utiliser les fonctions avec le préfixe mb_.

Les fonctions sans le mb_ travaillent sur des caractères à un ou deux octets (je ne me souviens plus), ce qui fait que quand tu les appliques sur de l'UTF-8 elles font n'importe quoi s'il y a des caractères faisant plus d'octets (3 ou 4) (ce qui est possible avec utf-8 mais pas en ISO-8859).

Je garantis pas l'explication, mais je crois que c'est ça l'idée :wink:

Sir Dipp
WRInaute passionné
WRInaute passionné
 
Messages: 1025
Inscription: 21 Juil 2003

Re: PHP et UTF-8

Message le Dim Fév 15, 2009 13:25

Le problème d'encodage peut venir de différentes sources. Par exemple, la source des données (est-ce qu'elles viennent de la base de donnée et est-ce que la base de donnée est en UTF-8 ?)

Il y a également le fichier script, est-ce qu'il est bien en UTF-8 Plain, cela peut jouer également.

Après finalement, il y a les fonctions PHP qui elles ne sont pas en UTF-8 et qui t'obligent effectivement à utiliser la librairie MB String. Mais avec PHP6 ça sera fini, UTF-8 en natif (enfin).

a++


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités