Comment manipuler des fichiers nommés Unicode avec subversion dans Windows?

Disons que j’utilise Windows 7 avec la page de code 950 (Big5, chinois traditionnel), je veux manipuler certains fichiers mélangés avec un nom unicode tel que 简体中文文件.txt (GB2312, chinois simplifié) avec svn.

Si j’utilise chcp 950, quand je lance:

 svn add .\简体中文文件.txt 

J’ai une erreur:

 svn: warning: W155010: 'D:\path\to\work-dir\?体中文文件.txt' not found svn: E200009: Could not add all targets because some targets don't exist svn: E200009: Illegal target for the requested operation 

Si j’utilise chcp 65001 (UTF-8), je reçois une erreur encore pire:

 svn: warning: W155010: 'D:\path\to\work-dir\?体svn: E200009: C ould not add all targets because some targets don't exist svn: E200009: Illegal target for the requested operation 

Je voudrais essayer chcp 1200 (UCS-LE) mais il dit:

 Invalid code page 

Il semble que TortoiseSVN puisse manipuler ces fichiers correctement. Cependant, je dois écrire des scripts appelant svn pour exécuter plusieurs travaux automatisés. Y a-t-il une solution disponible?

Les programmes comme svn qui utilisent l’implémentation MS des fonctions d’E / S du fichier de la bibliothèque du standard C ne peuvent pas lire les commandes ou les noms de fichiers contenant des caractères en dehors de la page de codes actuelle. Vous devrez vous chcp à une page de code appropriée pour chaque fichier séparément (par exemple, 936 pour le chinois).

En théorie, la page de code 65001 pourrait couvrir tous les caractères, mais malheureusement, l’exécution de MS C comporte de sérieux bogues qui interrompent généralement les applications lorsque cette page de codes est utilisée. L’incapacité persistante de Microsoft à résoudre ce problème de longue date laisse à UTF-8 un statut de citoyen de deuxième classe sous Windows.

À l’avenir, il semblerait que http://subversion.tigris.org/issues/show_bug.cgi?id=1537 devrait résoudre le problème en utilisant des API Win32 directes au lieu de C stdlib pour faire des écritures de console, mais je ne vois pas où le changement de code associé permet de confirmer si l’entrée de la console et l’access aux fichiers sont traités de la même manière.