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 manipulation 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.
# L'utilsation de mb_ est logique
Posté par kertiam . Évalué à 2.
Dans la doc de php, php<6 considère que pour une chaine 1 caractère = 1 octet. ( voir http://fr.php.net/manual/fr/language.types.string.php )
J'ai eu recours a deux attitudes :
* tout forcer en ISO 8859-1 avec utf8_decode() ce qui n'est pas spécialement fin.
* forcer tout le monde : php (option de compilation), xhtml (en tete, mimetype), mysql (déclaration) et le navigateur (re mimetype, meta-equiv) en utf8 et utiliser les mb_* . Ce qui n'est pas non plus très fin.
Par mon expérience je dirais que les mb_ est une manière logique, voire normale.
# Surcharge des fonctions de chaines
Posté par leviathan (site web personnel) . Évalué à 2.
tant que l'on sera en php < 6, il y aura des problèmes avec l'UTF-8 car les fonctions de manipulation de chaine de php ne se pré-occupe pas de l'encode des chaines que l'on lui passe. Il est donc normal de devoir passer par les fonctions mb_* ou les utf8_encode ou utf8_decode.
Mais il existe un paramètre de configuration dans le php.ini qui permet l'utilisation de toutes les fonctions de chaine de caractères en passant par les fonctions mb_*
En mettant mbstring.func_overload=7, toutes les fonctions de chaines tel que strlen, ereg sont surchargées par leur equivalent mb_* (strlen = mb_strlen, ereg = mb_ereg, ...)
Mais certaines applications web supporte mal ce paramètre, comme par exemple, phpMyAdmin qui indique alors qu'il y a des risques lors de la modification de données via son interface.
# Merci
Posté par Robert VISEUR (site web personnel) . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.