2012-11-18 1 views
1

Я использую следующий код для чтения текущего каталога в Windows 7. В текущем каталоге находится C: \ 特斯塔 敌人. Текущий язык - английский (EN). Я использовал getCurrentDirectoryW с идеей, что это будет правильно читать путь к каталогу, так как функция использует юникода:Использование getCurrentDirectoryW Не читает нелокальные символы

wchar_t w_pcRootLocation[MAX_PATH+100]; 
GetCurrentDirectoryW(MAX_PATH, w_pcRootLocation); 
wcout << w_pcRootLocation << endl; 

MAX_PATH определяется в WinDef.h и равно 260.

При печати на выходе на консоль, используя wcout, я вижу только следующее:

C:\ 

Китайские символы не читаются, по-видимому,. В чем проблема и как я правильно прочитал путь в Юникоде?

Спасибо.

+2

Пройдите код в отладчике, и вы увидите, что 'GetCurrentDirectoryW' работает нормально. Проблема заключается в 'wcout'. (Другими словами, китайские символы были правильно прочитаны. Проблема возникает, когда * пишите * их.) –

ответ

2

GetCurrentDirectoryW(), вероятно, работает нормально. Это следующий бит, у которого проблемы.

std :: wcout будет использовать локаль «C». Вам нужно будет отрегулировать (imbue()) его соответствующим образом, чтобы отобразить символы из кодовых страниц. См. this SO question.