Чтение акцентированных имен файлов в VB6 - PullRequest
6 голосов
/ 07 июля 2011

У меня есть приложение VB6, которое делает список папок и выбирает имена файлов.Некоторые из них акцентированы, например "Guimarães.txt" (маленькая буква A с тильдой).И функция VB Dir, и функции FileSystemObject не могут распознать акцентированный символ и вместо этого возвращают имя файла как «Guimar? Es.pdf», поэтому впоследствии я не могу открыть файл.Я правильно вижу файл в проводнике Windows

Это происходит только в одной рабочей среде, работающей под управлением Windows Server 2003 R2.В наших тестовых системах мы можем правильно прочитать файл, хотя в основном это Windows 2008 и Windows 7. Сначала я думал, что это версия FSO, но, поскольку «Dir» дает те же результаты, я больше не думаю.Кроме того, когда я записываю имя файла в файл журнала, это также неверно.Поэтому я думаю, что на очень ранней стадии он не может справиться с персонажем и заменяет его знаком вопроса.

Что мне нужно установить, так это причину проблемы: это версия Windows или мои региональные настройки (которые я не могу просмотреть, так как моя учетная запись заблокирована), и что можетЯ делаю, чтобы решить проблему.На данный момент я попросил пользователей не использовать эти символы, но это не долгосрочное решение.

Спасибо.

1 Ответ

2 голосов
/ 07 июля 2011

Хорошо, имя файла, считываемое с диска, использует Unicode.Когда вы пытаетесь отобразить это, используемый шрифт не поддерживает этот глиф, поэтому он показывает «?», Но запись на диск записывает правильное представление.Когда это затем передается файловым функциям, оно «конвертируется» в MBCS или другую кодировку, которая затем прерывается.

Вы можете либо изменить свой код, чтобы использовать собственные вызовы Win32 API, либо просто изменить «язык»для программ, не поддерживающих Юникод ", чтобы соответствовать языку, используемому в имени файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...