Convertir MacRoman en UTF-8

J’ai récemment été confronté à cette nécessité, or PHP ne gère pas MacRoman et tout le monde ne peut pas utiliser iconv (cas des hébergements mutualisés peu flexibles).

Voici donc une fonction en PHP qui permet d’encoder du texte supposé être en MacRoman vers de l’UTF-8.

Elle utilise la fonction PHP strtr(). J’ai fait le choix du tableau associatif pour pouvoir plus facilement détecter les bugs et contrôler individuellement les conversions. Je ne sais pas si ça irait plus vite avec deux chaînes, et je n’ai pas l’intention de tester. Mais si vous avez un avis sur la question, vous pouvez laisser un commentaire.

MacRoman comporte quelques ligatures (Æ, æ, Œ, œ, fi et fl), la fonction permet en option de les délier. Cette option a deux niveaux pour permettre de ne délier que les ligatures purement typographiques (fi et fl)).

Pour que cette fonction puisse être utilisée en toute sécurité dans des documents (X)HTML, les caractères interdits ou litigieux sont convertis en espaces ou supprimés (cas du logo Apple – xF0 – absent d’Unicode).

Les points x09 (tabulation), x0A (line feed) et x0D (carriage return) sont conservés car compatibles à la fois avec Unicode et (X)HTML.

Si j’ai le temps, je ferai une page permettant d’exploiter cette fonction avec un formulaire et éventuellement un upload de fichier.

Un grand merci à Olivier Miakinen, pour ses conseils éclairés et sa patience.

Ressources

← article précédentarticle suivant →

Les commentaires pour cet article sont fermés.