Le codage du nom de fichier est défini par le système de fichiers. NTFS utilise UTF-16. Cela n'a pas d'importance, cependant.
Lorsque vous dir
en ligne de commande, il ne fait pas que copier les octets à l’aveugle. Il doit d’abord appeler la fonction appropriée du système d’exploitation pour répertorier le répertoire, puis imprimer les détails du fichier reçu sur la console.
Quand cmd
appelle la fonction système pour récupérer une liste de répertoires, elle s'attend déjà à ce qu'elle soit renvoyée dans le codage préféré (ce qui n'est pas nécessairement le codage de votre choix - plus d'informations à ce sujet plus tard). Peu importe le type d’encodage utilisé en interne dans le système de fichiers, car le système d’exploitation fournit une couche d’abstraction supplémentaire pour simplifier les choses. FS peut utiliser n’importe quel codage que vous pouvez imaginer, mais tant que le système d’exploitation le supporte, cmd
recevra les noms de fichiers dans son codage préféré, pas celui de FS.
Le "codage préféré" que j'ai mentionné est soit ANSI avec page de code appliquée, soit Unicode. ANSI était utilisé comme codage par défaut avant Windows 2000. Windows 2000 et les versions plus récentes utilisent Unicode par défaut, mais peuvent toujours exécuter des programmes ANSI.
Pour les programmes Unicode, la page de code est complètement ignorée et chcp
n'a aucun effet. Il n'est utilisé que par les anciens programmes ANSI qui reposent sur la définition d'une page de code appropriée. Cela n'a plus d'importance pour Unicode, car il est bien défini et prend en charge tout ce qu'un programme raisonnable peut générer.
cmd
supporte Unicode, il recevra donc les noms de fichiers déjà en Unicode.
Comme vous l'avez déjà découvert, le coupable était la police par défaut. Ce problème est mentionné sur Page Technet sur chcp :
Seule la page de codes du fabricant d'équipement d'origine (OEM) installée avec Windows XP apparaît correctement dans une fenêtre d'invite de commande utilisant des polices Raster. Les autres pages de code apparaissent correctement en mode plein écran ou dans les fenêtres d'invite de commande utilisant des polices TrueType.