3056Fermer3058
flankerLe 25/11/2012 à 00:16
flanker (./2783) :
Je viens de découvrir que les systèmes de fichiers linuxiens acceptaient n'importe quelle chaîne d'octets comme nom… Sans préciser le moindre encodage tritop C'est vrai, dans les années 70 on ne connaissait que l'ASCII, et ils n'ont pas pensé à regarder ce qui s'est fat autour d'eux entretemps.

Accessoirement, chez Unicode, ils ont eu la bonne idée de représenter le même caractère sous différentes formes (genre le é qui peut être écrit indifféremment comme « è » ou comme « e + ` »).

Conséquence intéressante : si deux programmes différents utilisent le même fichier « èèèèèèèè.txt », on n'a aucun moyen de savoir si sous Linux ils vont lire le même fichier (potentiellement, ça correspond à 256 fichiers différents), contrairement à OS X ou Windows (qui utilisent de l'Unicode, comme tout OS qui se respecte).
(http://nedbatchelder.com/blog/201106/filenames_with_accents.html)


Bon, bah en fait je me retrouve face au problème. J'ai le nom en unicode du fichier à lire, je dois le passer à mod_xsendfile pour l'envoyer via Apache. Je dois deviner le bon encodage du nom de fichier (pour l'écrire dans mon header de réponse HTTP), sachant qu'il en existe 4^(nombres de caractères accentués) ). Et accessoirement, il n'y a aucune raison que l'encodage convenant pour un fichier fonctionne pour les autres...

C'est fantastique \o/