flanker (./3068) :
Quant aux autres OS, ils te garantissent au moins que quelque soit ta façon de normaliser, ça sera le même fichier. Par exemple, avec ma ligne de Python, je n'ai bien qu'un seul fichier sur OS X.
Et ce n'est pas normal. Tu as utilisé 2 noms différents, ce sont 2 fichiers différents. Le noyau n'a pas à normaliser quoi que ce soit. Ce serait d'ailleurs impossible sous GNU/Linux parce qu'un nom de fichier du noyau Linux est une séquence d'octets, rien ne dit que c'est de l'UTF-8. (D'ailleurs, si tu utilises par exemple un locale Latin1, les noms de fichiers seront normalement en Latin1, du moins si tes applications fonctionnent correctement. Mais les locales non-UTF-8 sont dépréciés.)
flanker (./3071) :
Dans ce cas, c'est complètement débile, ça veut dire que tu peux utiliser n'importe quel encodage, et que l'application n'a aucun moyen de savoir quel encodage a été utilisé...
L'encodage est censé être celui du locale (et pour l'UTF-8, en NFC), si l'application qui écrit le fichier ne respecte pas ça, ce n'est pas la faute de celle qui le lit si elle ne le trouve pas.
squalyl (./3083) :
a mon avis le choix de char* ou wchar_t* pour les chaines est une décision à prendre à la base. Imagine si ils doivent faire ce changement partout dans le noyau où des chaines sont utilisées
C'est pourri, les wchar; l'UTF-8 est la bonne solution (compatible ASCII, ne gaspille pas de place si on ne met que de l'ASCII, et les mêmes routines peuvent être utilisées pour l'UTF-8 et pour tous les encodages obsolètes en 8 bits, sans devoir passer par des conversions potentiellement à perte).
flanker (./3087) :
Et c'est un truc qui aurait pu être pris en compte dès le début ; que je sache, les accents existaient déjà en 1991
Mais pas l'Unicode! Il y avait plein d'encodages différents selon le locale, et donc la solution la plus simple et la plus logique a été retenue: on accepte une séquence d'octets quelconque et c'est à l'userspace d'utiliser le bon locale.