Я использую следующий код для чтения текущего каталога в Windows 7. Текущий каталог — C: \ 特斯塔 敌人. Текущий язык — английский (EN). Я использовал getCurrentDirectoryW с идеей, что он будет правильно читать путь к каталогу, так как функция использует юникод:
wchar_t w_pcRootLocation[MAX_PATH+100];
GetCurrentDirectoryW(MAX_PATH, w_pcRootLocation);
wcout << w_pcRootLocation << endl;
MAX_PATH определен в WinDef.h и равен 260.
Когда я печатаю вывод на консоль с помощью wcout, я вижу только следующее:
C:\
Китайские иероглифы не читаются, видимо. В чем здесь проблема, и как правильно прочитать путь в Юникоде?
Благодарю.
GetCurrentDirectoryW (), вероятно, работает нормально. Это следующий бит, который имеет проблемы.
std :: wcout будет использовать локаль «C». Вам нужно будет настроить (imbue()
) это соответственно для отображения ваших глифов из кодовой страницы. Увидеть этот ТАК вопрос для деталей.
Этот вопрос, кажется, решил проблему для wcout …
без вывода широких символов в командную строку
Стоит проверить с помощью отладчика, чтобы убедиться, w_pcRootLocation
действительно содержит символы.