PHP et UTF-8 : les frères ennemis font la paix

PHP est un vieux langage. Apparu aux tous débuts de l’ère Internet, en 1994, il a depuis beaucoup évolué. La dernière grande évolution est apparue avec la version 5, le 13 juillet 2004, apportant le support natif de vraies classes et objets, comme tout langage évolué. La dernière nouveauté, la gestion des espaces de noms, est apparue avec la version 5.3, le 30 juin 2009. Depuis le 22 juillet 2010, nous sommes en version 5.3.3.

Pourtant, malgré cette évolution constante, certains points techniques majeurs ne sont pas traités comme il faut. Je n’en citerai que deux :

  • Le nommage des fonctions et l’ordre des paramètres n’est pas toujours cohérent,
  • Le langage supporte en natif l’encodage ISO-8859-1 et pas UTF-8.

Le premier sujet est traité par l’excellent article de Armel Fauveau : « Et si PHP était audité demain ? ». Je vous invite à le lire. L’article semble caricatural, mais tout ce qui y est dit est vrai. Je rajouterai seulement qu’en plus de tout cela, les fonctions ne sont pas intégrées dans des classes.

Le second sujet est plus problématique. L’Internet est mondial. Ne supporter que l’encodage latin là où tous les autres langages sont passés à Unicode, et donc UTF-8, fait passer PHP comme un langage d’hier dont l’avenir est incertain. La version 6 devait apporter une solution radicale en supportant nativement Unicode. Mais voilà. Il n’existe aucune roadmap pour cette version. Pis, la branche de développement PHP 6 a été supprimée ! J’ai même lu, au hasard de mes surfs, un article qui titrait « PHP 6 est mort ! Vive PHP ! ».

Il faut donc faire avec les moyens du bord. Comment faire de l’UTF-8 avec PHP 5 ? Voici un guide pratique. Lire la suite