Я получаю строку, которая более или менее выглядит так:
"C:\\bláh\\bleh"
Я делаю с ним FileInfo, но когда я проверяю его существование, он возвращает false:
var file = new FileInfo(path);
file.Exists;
Если я вручную переименую путь к
"C:\\blah\\bleh"
во время отладки и убедитесь, что blah существует с bleh внутри него, тогда file.Exists начнет возвращать true. Поэтому я считаю, что проблема заключается в не-ascii-символе.
Фактическая строка создается моей программой. Одна часть исходит из AppDomain приложения, то есть той части, которая содержит «á», а другая часть каким-то образом исходит от пользователя. Обе части собираются вместе с помощью Path.Combine. Я подтвердил правильность полученной строки двумя способами: скопировав ее из ошибки, которую генерирует моя программа, которая включает путь, в проводник, файл отлично открывается. Глядя на эту строку в отладчике, она выглядит правильно экранированной, в которой \ записываются как \. Отладчик буквально печатает «á».
Как мне обработать строку, чтобы даже если она содержит не-ascii-символы, она оказалась допустимым путем?
"True":FileInfo fi = new FileInfo("C:\\bláh\\bleh"); Console.WriteLine(fi.Exists);- person Fredrik Mörk   schedule 19.08.2009