PHP Markdown et le codage du texte
Le remplacement des caractères en dehors de la plage ASCII par leur entité HTML équivalente est très répandue sur le web. Je parle du remplacement des caractères (comme é
) par une entitée nommée (é
) ou numérique (é
en décimal ou é
en hexadécimal). De temps en temps, je reçoit un courriel qui me demande d’ajouter le codage des caractères par leur entité HTML dans PHP Markdown. Voici pourquoi ça ne se produira pas.
La raison pour laquelle Markdown ne code aucun caractère (excepté <>'"&
lorsque approprié) est que vous ne devriez pas avoir à les coder. PHP Markdown fonctionne avec n’importe quel codage de caractrère qui est une extension de l’ASCII, incluant ISO-Latin-1 et UTF-8, et laissera les caractères comme tel. Si le texte à l’entré est en UTF-8, le résultat sera en UTF-8 et s’affichera correctement sur une page web, pourvu que le « charset » UTF-8 soit spécifié dans le type mime (soit dans l’entête du serveur, soit dans une balise meta
).
Si vous voulez convertir ces caractères en entités, n’hésitez pas: faites-le après que Markdown ai terminé sa conversion du texte. Mais il n’appartient pas à Markdown de faire la conversion de tels caractères. Convertir correctement les caractères en entités demande de connaître le codage du texte d’entré, et Markdown ne le connaît pas — il assume tout simplement qu’il s’agit de n’importe quel codage basé sur l’ASCII.