Юникодное консольное приложение:
———————–
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR str[] = L"english русский\n";
DWORD tmp;
HANDLE stdo = GetStdHandle(STD_OUTPUT_HANDLE);
WriteConsoleW(stdo, str, wcslen(str), &tmp, NULL);
wprintf(str);
return 0;
}
———————–
Через WriteConsoleW русский текст прекрасно выводится. Через wprintf выводится только "english", русские символы проглатываются. Как сделать, чтобы работало? Даже в гугле найти ответ не получилось.
31 мая 2008 в 23:05
Кстати, вот это некорректно:
TCHAR str[] = L"english русский\n";
31 мая 2008 в 12:02
ясно. я как то пытался этой функцией пользоваться – вроде нормально заработало но какие то другие были потом глюки с русским (уже не помню что именно) – пришлось отказаться от русского т.к. было не критично)
31 мая 2008 в 9:01
Я уже нашел таки описание этого глюка на сайте микрософта. Оказывается в CRT у студии 2003 нет полной поддержки юникода. Отсюда и проблемы.
Локаль мне мало чем поможет. Мне не только русские буквы нужны, а еще и иероглифы китайско-японские. Нужен полноценный юникод. Похоже только в 2005 студии появилась поддержка.
31 мая 2008 в 9:00
надо локаль поменять //msdn.microsoft.com/en-us/library/x99tb11d(VS.71).aspx