DarthWazer
@DarthWazer

Проблема с модификаторм ширины в printf (кириллица в utf-8) что делать?

Новая консоль в винде работает с кодировкой utf-8 (65001), исходники тоже в utf-8, все как надо, кроме того что:
printf("%10s %10s", "какая-то", "строка");
выводит все вместе, указанная ширина поля игнорируется, если использовать кириллицу.
Как это починить? Компилятор MinGW, gcc 8.1.0. Язык С.

UPD: Код на С++, с использованием манипуляторов (std::setw) работает правильно. Похоже проблема не в консоли.
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
myjcom
@myjcom
Похоже проблема не в консоли.

#include<iostream>
#include<clocale>
int main(void)
{
    setlocale(LC_ALL, "");
    system("chcp 65001");
    printf("%10ls %10ls", L"Маша ела", L"кашу.");
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Может быть потому, что русские буквы кодируются двумя байтами?
Попробуйте выставить x2 ширину строки в описателе формата.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы