У меня есть имя папки на японском языке. CFileDialog getpathNameis
возвращает несколько вопросительных знаков при выборе папки. Есть ли способ решить эту проблему?
CFileDialog getpathName не читает японский
Ответы (1)
Если ваше приложение создано с поддержкой MBCS, а не с поддержкой Unicode, путь для японского языка будет обрабатываться правильно только в том случае, если для параметра "Язык для программ, не поддерживающих Unicode" (также известный как языковой стандарт системы) задан японский, что подходит для ваших японских пользователей, но может быть не для вас, если вы не японец.
Если язык вашей системы не японский, путь преобразуется в вашу кодовую страницу, прежде чем он будет возвращен GetPathName()
. Он будет либо содержать замещающие (?) символы, либо мусор. Скорее всего смесь того и другого.
Вот несколько доступных возможностей:
Ничего не делай. Ваше приложение должно нормально работать для большинства пользователей из Японии. Или не...
Протестируйте свое приложение с японской кодовой страницей. Для этого либо временно измените свой язык для программ, не поддерживающих Unicode (требуется перезагрузка), либо (гораздо проще) протестируйте свое приложение в разделе Месторасположение приложения. (Примечание. Да, он отлично работает под Windows 7. Эта статья может помочьесли есть проблемы).
Переключите его на Unicode. В зависимости от размера вашей кодовой базы это может быть очень утомительной задачей, в основном в зависимости от входных и выходных данных и от того, используете ли вы
_T("blah")
строковых литералов в своем коде. Конечно, есть и другие аспекты, но эти самые важные. Кстати, все новые проекты должны быть сделаны с учетом поддержки Unicode.Обработайте эту проблему пути специально. Поскольку мы говорим о файловом диалоге, весь диалог должен быть открыт как Unicode. Это означает, что вам, вероятно, придется явно вызывать Unicode-версию базового Win32 API, а не просто
CFileDialog
. Это не так сложно, но есть риск, что вы решаете только первую задачу подряд. После того, как вы правильно настроите японский путь, вам придется иметь дело с вводом текста на японском языке пользователем... Поэтому я не думаю, что это решение является хорошим.
Решение № 2, безусловно, является самым быстрым способом выявления небольших проблем. Решение № 3, безусловно, лучшее в долгосрочной перспективе. Но убедитесь, что вам это действительно нужно, потому что это может быть утомительно для существующих приложений.
GetPathName
не возвращает японские символы? Возможно ли, что проблема в коде, выводящем результаты, а не в самомGetPathName
? - person Mark Ransom   schedule 09.11.2011