je reçois une chaîne plus ou moins ressemble à ceci:chemins de fichier avec des caractères non-ascii et FileInfo en C#
"C:\\bláh\\bleh"
Je fais un FileInfo avec elle, mais quand je vérifie son existence il retourne faux :
var file = new FileInfo(path);
file.Exists;
Si je Renommez manuellement le chemin d'accès
"C:\\blah\\bleh"
au moment de la mise au point et veiller à ce blah existe d'esprit h a bleh dedans, alors file.Exists commence à retourner vrai. Donc, je crois que le problème est le caractère non-ascii.
La chaîne actuelle est créée par mon programme. Une partie vient de l'AppDomain de l'application, qui est la partie qui contient le "á", l'autre partie vient, en quelque sorte, de l'utilisateur. Les deux parties sont assemblées par Path.Combine. J'ai confirmé la validité de la chaîne résultante de deux façons: en la copiant de l'erreur que mon programme génère, ce qui inclut le chemin, dans l'explorateur ouvre le fichier très bien. En regardant cette chaîne au débogueur, elle semble correctement échappée, en ce que \ est écrit comme \. Le "á" est imprimé littéralement par le débogueur.
Comment dois-je traiter une chaîne de sorte que même si elle a des caractères non-ascii, il s'avère être un chemin valide?
D'où provient la chaîne? est-il codé dans un fichier de code ou est-il fourni par l'utilisateur? –
Fredrik Mörk, je viens d'ajouter cette information à la question elle-même. – Pablo
C'est un bizarre. J'ai créé un fichier avec le même chemin et le même nom, et le code suivant affiche '' True '':' FileInfo fi = new FileInfo ("C: \\ bláh \\ bleh"); Console.WriteLine (fi.Exists); ' –