|
|
||||||||||||||||||||||||||
Русский текст без танцев с бубнами11.11.2011, 22:39. Показов 38820. Ответов 22
Метки нет (Все метки)
Доброго времени суток.
Решил раз и навсегда понять, как выводить русские буквы на консоль без всяких танцев с system("chcp ...") или SetConsoleCP. Интересует вариант, при котором исходник неизменно хранится в UTF-8, и компилируется на разных платформах. В частности интересуют *nix, cygwin, mingw. Пробовал такой вариант: Вариант с std::wstring
И такой: Вариант с std::string
И тут мне стало интересно, почему они сожрали std::wstring, начиная с первой встреченной русской буквы, и почему вдруг на cygwin заработал вариант с std::string, хотя std::wstring всё так же успешно сжирается? И самое главное: как сделать так, чтобы и std::wstring, и std::string корректно работали с русскими символами под всеми платформами без перекодирования исходника в нативную кодировку системы. С локалями тоже не удалось: std::locale
у mingw В общем, я несколько в замешательстве. Стандартная библиотека C++ (и Си по возможности) предоставляет средства для решения подобных проблем? Добавлено через 16 минут Не по теме: Возможно, стоило разместить эту тему в ветке "Кроссплатформенная разработка"?
0
|
||||||||||||||||||||||||||
| 11.11.2011, 22:39 | |
|
Ответы с готовыми решениями:
22
Xcode , С++ и русский язык: как вывести в файл русский текст без сбитой кодировки?
Русский текст |
|
|
||||||
| 11.11.2011, 22:44 | ||||||
|
И ещё вариантик от меня - перегрузка оператора вывода
перегрузка operator<<(
1
|
||||||
|
|
||
| 11.11.2011, 22:50 [ТС] | ||
|
-=ЮрА=-, спасибо, конечно, но это тоже бубен, только самодельный.
Вот почему: Всё равно спасибо.
0
|
||
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
| 11.11.2011, 23:04 | |
|
В windows( Visual Studio 2008 ) ни вариант с wstring, ни вариант с string не работают правильно.
0
|
|
|
79 / 34 / 6
Регистрация: 11.11.2010
Сообщений: 496
|
||||||
| 12.11.2011, 00:39 | ||||||
|
А такой вариант?
0
|
||||||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
|
||||||
| 12.11.2011, 01:07 | ||||||
|
talis, в CygWin только не отработало
2
|
||||||
|
|
|||
| 12.11.2011, 01:24 [ТС] | |||
|
easybudda, хм, MinGW не отработал. Не вывел русские символы, записанные в исходнике, зато обработал введённую строку.
Не по теме: Тихо шифером шурша, крыша едет не спеша...
0
|
|||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
|
|
| 12.11.2011, 01:33 | |
|
talis, дома нет винды, на работе пробовал - вроде работало... Странно всё... Ну в никсах за то работает
0
|
|
|
|
|
| 12.11.2011, 02:00 [ТС] | |
|
easybudda, так толку-то мне с никсов, если программа для винды делается?
За спиной стоит машинка с убунтой и freebsd (под виртуалкой в убунте), завтра утром попробую. Хотя вопрос как раз таки в универсальном решении. Ну не может же быть такого, чтобы все эти локали, кодировки и wide-charы были введены в стандарт от балды и не были отлажены. Должен быть способ заставить это работать как надо.
0
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
|
||
| 12.11.2011, 02:27 | ||
|
1
|
||
|
|
|
| 12.11.2011, 02:30 [ТС] | |
|
easybudda, то же самое. У меня давно складывается впечатление, что под виндой setlocale и плюсовый аналог нагло игнорируют кодировку, и применяют только форматы чисел с плавающей точкой, даты/времени и прочего.
0
|
|
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
|
| 12.11.2011, 04:25 | |
|
1
|
|
|
|
|
| 12.11.2011, 12:27 [ТС] | |
|
easybudda, под убунтой работает и ваш вариант с wchar_t, и аналогичный с char, причём последний даже без setlocale ("ru_RU.UTF-8" - это системная локаль). Аналогичный код на плюсах с широкими символами требует std::locale::global( std::locale( "ru_RU.UTF-8" ) ), причём имя локали такое с точность до регистра символа, разве что чёрточку в UTF-8 можно опустить, а плюсовый код с обычными символами так же работает без ручной установки локали.
Точно такое же имя локали под виндой валит конструктор std::locale. В общем, вопросов опять больше чем ответов. Главный вопрос - какого ... оно так (не) работает? И ещё: почему в никсе вариант с char подхватывает системную локаль, а wchar_t её нужно выставлять руками? Что будет, если системная кодировка окажется, скажем, KOI8R?
0
|
|
|
|
||||||
| 15.11.2011, 20:49 | ||||||
|
talis, попробуйте system("chcp 1251");
1
|
||||||
|
|
||||||||||||
| 16.11.2011, 17:26 [ТС] | ||||||||||||
|
fasked, я же и хочу не мучить исходники. Ищу универсальное бескостыльное решение для отображения русского текста на разных платформах без изменения исходника. Как он был в UTF-8, так он в нём везде и гуляет.
В Юрином варианте:
0
|
||||||||||||
| 16.11.2011, 17:37 | |
|
Не по теме: talis, я Вас не обманывал, правда только теперь вник в ваше задание, сейчас попробую кое что вам отыскать, посмотрите пока в сторону MulyByteToWideChar и ей обратную...
0
|
|
| 16.11.2011, 17:39 | |
|
0
|
|
| 16.11.2011, 17:39 | |
|
Помогаю со студенческими работами здесь
20
Русский текст вывод string русский текст
Не печатает русский текст Русский текст в консоли Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|