CFileDialog getpathName не читает по-японски - PullRequest
2 голосов
/ 09 ноября 2011

У меня есть имя папки на японском языке. CFileDialog getpathNameis возврат некоторых вопросительных знаков при выборе папки. Есть ли способ решить это?

1 Ответ

2 голосов
/ 10 ноября 2011

Если ваше приложение построено с поддержкой MBCS, а не поддержкой Unicode, японский путь будет обрабатываться правильно только в том случае, если ваш «Язык для программ, не поддерживающих Unicode» (он же системный языковой стандарт) установлен на японский,это относится к вашим японским пользователям, но может не подходить для вас, если вы не японец.

Если системный языковой стандарт не японский, путь преобразуется в вашу кодовую страницу, прежде чем она будет возвращена GetPathName().Он будет содержать замену (?) Символов или мусор.Скорее всего, сочетание обоих.

Вот несколько доступных вариантов:

  1. Ничего не делать.Ваше приложение должно нормально работать для большинства японских пользователей.Или нет ...

  2. Проверьте свое приложение под японской кодовой страницей.Для этого либо временно измените язык для программ, не поддерживающих Юникод (требуется перезагрузка), либо (намного проще) протестируйте приложение под AppLocale .(Примечание: Да, он работает нормально под Windows 7. Эта статья может помочь , если у вас есть проблемы).

  3. Переключите его на Unicode.В зависимости от размера вашей кодовой базы это может быть очень утомительной задачей, в основном в зависимости от входных и выходных данных и от того, используете ли вы _T("blah") строковые литералы в своем коде.Конечно, есть и другие аспекты, но они являются наиболее важными.Кстати, все новые проекты должны выполняться с поддержкой Unicode.

  4. Специально обработать эту проблему пути.Поскольку мы говорим о файловом диалоге, весь диалог должен быть открыт как Unicode.Это означает, что вам, вероятно, придется явно вызывать Unicode-версию базового Win32 API, а не просто CFileDialog.Это не так сложно, но есть риск, что вы решаете только первую проблему подряд.После того, как вы правильно укажете свой японский путь, вам придется иметь дело с вводом японского текста пользователем ... Так что я не думаю, что это хорошее решение.

Решение№ 2, безусловно, самый быстрый способ выявления небольших проблем.Решение № 3, безусловно, лучшее в долгосрочной перспективе.Но убедитесь, что это действительно нужно, потому что это может быть утомительно для существующих приложений.

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