11 juin 2006

Encodages

Sal*peries d'encodages.

Quand on fait proprement de l'UTF-8, tous les navigateurs, de Cyberdog sous MacOS 7.6.1 à Firefox sous Windows XP, en passant par Safari sous MacOS X et Netscape 4.5 sous MacOS 8.6, tous les navigateurs, l'affichent proprement. Pour être plus juste, disons que le latin étendu passe à peu près. On peut par exemple écrire « à cœur ouvert », et non « à coeur ouvert », ou je ne sais quel «cÅŋur ouvert»

Mais... comment faire de l'UTF-8 propre ? me direz-vous. N'entend-on pas souvent dire que c'est difficile ? À s'arracher les cheveux ? Sal*peries d'encodages, p*urritures d'accents, diacritiques de mes *, vous voyez le genre.

Eh bien voyez-vous, c'est drôle comme tout devient simple quand :
  • les données sont réparties sur un système de fichiers Linux et une base de données 8bit MySQL 3,
  • les navigateurs sont Firefox, Netscape 4, Netscape 7, Opera, IE 4.01, IE 4.5, IE 5.2, IE 6, Mozilla, Cyberdog, Amaya, iCab, Safari, OmniWeb, Camino, et Cyberdog
  • les systèmes d'exploitation sont Windows XP, MacOS 7.6.1, MacOS 8.6, MacOS « Classic » 9.1, et MacOS X
  • certains navigateurs veulent voir arriver des octets masqués à 0x7F, c'est-à-dire qu'ils comprennent bien les entités HTML ou XML comme «ŋ», mais pas des octets arbitraires comme « Åŋ »
  • le langage de programmation est PHP 4, où les String sont en 8bit
  • sur un autre serveur le langage est Java, où les String sont obligatoirement en Unicode
  • il y a des appels distribués dans l'architecture (re-masquage à 0x7F, etc.)
  • les feuilles XSLT qui doivent cracher de l'UTF-8 sont écrites en ISO-8859-1
  • on développe à la fois sous Windows et MacOS, dont les encodages sont incompatibles (Windows CP1252 et MacOS Roman), et les sources sont en ISO-8859-1
  • la gestion de conf se fait avec Subversion sous NetBSD
Comme on le devine, cette simplicité est la conséquence heureuse du choix courageux de limiter les exigences techniques, et, osons le dire, d'un certain ostracisme.

En effet, il a été décidé de ne pas tester l'application avec Konqueror.

Aucun commentaire: