Пишу программу клиент-серверное приложение, особенность состоит в том, что сервер будет на Ubuntu, а клиент будет работать в Windows. И столкнулся с знаменитой проблемой с языком в консоли. На первых парах думал, что устранить данную проблему элементарно, но чем больше пытался устранить её, тем меньше у меня что-то получалось. Сразу оговорюсь, что собираю проект из под Ubuntu при помощи компилятора x86_64-w64-mingw32.
Что я попробовал: пробовал установить std::setlocale(LC_ALL, ""); результат изменился, но чуть попозже скажу, что изменилось. Пробовал SetConsoleOutputCP(1251); SetConsoleCP(1251); писать, результат тоже изменился, пробовал установить широкии символы и напечатать их, но программа в принципе отказывалась их печатать:
std::locale::global(std::locale("")); // Устанавливаем текущую локализацию std::wcout.imbue(std::locale()); // Устанавливаем локализацию для wcout wcout << L"Привет" << endl;
Вот результат: без установки локали:
Hello world! ╨б╨╛╨║╨╡╤В ╨╕╨╜╨╕╤Ж╨╕╨░╨╗╨╕╨╖╨╕╤А╨╛╨▓╨░╨╜ ╨б╨╛╨║╨╡╤В ╤Б╨╛╨╖╨┤╨░╨╜
С установкой локали:
Hello world! Сокет инициализирован Сокет создан
Есть ли тут эксперты по работам со строками и их локализацией? Кто может, подскажите пожалйста. Работаю в Visual Studio Code. По поводу этого вопроса:Русский язык, мне эта информация не помогла, я уже написал выше, что я пробовал.
$ echo Сокет | iconv -f utf8 -t cp1251→Сокет– aleksandr barakin May 31 '23 at 09:03