singlepost

Win32, console, UNICODE, printf, vs2003. Не работает << На главную или назад  

Юникодное консольное приложение:
———————–
#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", русские символы проглатываются. Как сделать, чтобы работало? Даже в гугле найти ответ не получилось.

37 ответов в теме “Win32, console, UNICODE, printf, vs2003. Не работает”

  1. 4
    Андрей Куликов ответил:

    Кстати, вот это некорректно:
    TCHAR str[] = L"english русский\n";

  2. 3
    Михаил Мазурский ответил:

    ясно. я как то пытался этой функцией пользоваться – вроде нормально заработало но какие то другие были потом глюки с русским (уже не помню что именно) – пришлось отказаться от русского т.к. было не критично)

  3. 2
    Алексей Терещенко ответил:

    Я уже нашел таки описание этого глюка на сайте микрософта. Оказывается в CRT у студии 2003 нет полной поддержки юникода. Отсюда и проблемы.
    Локаль мне мало чем поможет. Мне не только русские буквы нужны, а еще и иероглифы китайско-японские. Нужен полноценный юникод. Похоже только в 2005 студии появилась поддержка.

  4. 1
    Михаил Мазурский ответил:

    надо локаль поменять //msdn.microsoft.com/en-us/library/x99tb11d(VS.71).aspx

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.