Ça y est, je peux enfin poster des articles en français sur mon blog. C'est tout de même plus pratique car je vais plus vite en français pour faire des fautes (computers make very fast, very accurate mistakes).

Le problème était que pour une raison étrange, le site web de mon labo n'obéit pas bien aux consignes d'encodage qu'on lui donne, et il envoie des choses en latin1 avec les entetes UTF. Ou quelque chose du genre, je n'ai jamais regardé d'assez près. Ce qui est sûr est que c'est cassé, quoi. J'ai plusieurs trucs, et il semblerait que la solution la plus robuste soit d'encoder mes accents sous form d'entités HTML. C'est bourrin mais ca marche.

Convertir l'utf en entités html

Malheureusement, iconv ne sait pas utiliser cet encodage étrange, et je ne peux donc pas l'utiliser convertir d'utf en entités html. C'est bien dommage car iconv est bien pratique par ailleurs, mais c'est ainsi. J'ai tenté de regarder le code d'iconv pour ajouter la fonctionnalité, et ... erm. Disons que c'est du code libc, bien pensé pour l'efficacité toussa, mais pas forcément hyper accueillant pour le nouveau venu. Au bout de 30mn j'ai à peu près compris comment les tables de caractères sont rangées en mémoire, mais j'ai pas trouvé les données elles-mêmes.

Du coup, je me suis rabattu sur perl, et j'ai fait un ptit script rapide: utf2html, et hop. Merci HTML::Entities. J'ai bien sûr lien physique html2utf qui pointe vers le même binaire pour la conversion dans l'autre sens. Notez que le script lié ici est un lien dur vers ma copie de travail. Il est bien possible qu'il évolue au cours du temps (même si je ne m'attend pas à le voir révolutionné)

Automatiser la conversion dans git

Après ça, j'ai plus qu'à invoquer ce script automatiquement en cas de commit, et je peux écrire en français sans plus y penser. Le hook pre-commit suivant fait l'affaire. A chaque commit, mes fichiers sont automatiquement encodés en html entities. Si je veux repasser en utf (par exemple pour éditer), je lance html2utf à la main. Bourrin, mais works for me.

for file in `git status --porcelain -s|grep -v ^?|grep 'mdwn"*$'|sed 's/^...//' |sed 's/ -> .*//' `; do
  /path/to/utf2html $file
done

Voila. L'étape suivante est d'autoriser les commentaires sur ce blog malgré les services infos du lab qui refusent les cgi-scripts d'ikiwiki. Je pense que je vais utiliser alioth pour cela car y'a une page "utiliser ikiwiki sur alioth". Pour l'instant, je n'ai regardé que le titre de cette page...