363Fermer365
ZephLe 14/12/2012 à 13:39
Folco (./361) :
Je me rends pas compte du boulot à faire (c'est pas concret pour moi de "passer une BDD en UTF-8")

En PHP, la notion de "chaîne de caractères" est assez brute, un peu comme en C : en interne il s'agit simplement d'un tableau de bytes dans lequel chaque byte représente un caractère. Le problème c'est que si cette simplification est vraie avec certains encodages comme ASCII ou ISO-8859-1 (celui de yAronet), ça devient faux avec d'autres comme UTF-8 où un seul caractère peut être codé sur plusieurs bytes. Du coup, toutes les fonctions habituelles de traitement des chaines de caractères ne fonctionnent plus : "strlen" va retourner n'importe quoi puisqu'elle considère que le nombre de caractères dans une chaine est égal au nombre de bytes qui la compose ; "substr" risque de couper en deux un caractère codé sur plusieurs bytes (et donc produire une chaine corrompue), etc. Donc concrètement il faut repasser sur tous les endroits du code qui traitent des chaines de caractère (je te laisse imaginer ce que ça représente grin) et les modifier pour qu'ils fonctionnent toujours en UTF-8.