powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
25 сообщений из 39, страница 1 из 2
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38059346
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени.

Нужно выводить в консоль строки utf-8. Выводятся или иероглифы или прямоугольники. Кто-нибудь решал такую задачу?

SetConsoleCP(CP_UTF8),
SetConsoleOutputCP(CP_UTF8),
system("chcp 65001")

пробовал.
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38059399
Katamaran1987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sherzod_Доброго времени.

Нужно выводить в консоль строки utf-8. Выводятся или иероглифы или прямоугольники. Кто-нибудь решал такую задачу?

SetConsoleCP(CP_UTF8),
SetConsoleOutputCP(CP_UTF8),
system("chcp 65001")

пробовал.Setlocale пробовал?
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38059477
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katamaran1987,

setlocale(LC_ALL, "Russian");
setlocale(LC_ALL, "ru_RU.UTF-8");
setlocale(LC_ALL, "");

пробовал. Еще пробовал

#pragma execution_character_set("utf-8")
// такой прагмы в 2012 вообще нет

_setmode(_fileno(stdout), _O_U8TEXT);
// В 2012 натыкается на ассерт

д-я студия, в linux о таких вещах даже и не задумываешься.
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38059776
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_Выводятся или иероглифы или прямоугольники.
А консольный шрифт у тебя юникодный?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38059819
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Да. Аналогичный код скомпилированный gcc, в той же консоли работает почти нормально. В самом начале только выводятся два символа видимо в связи с попыткой консоли вывести BOM и надо еще переключать консоль в режим chcp 65001.
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38059927
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovsherzod_Выводятся или иероглифы или прямоугольники.
А консольный шрифт у тебя юникодный?..


Он должен быть не только юникодным, а конкретно поддерживать кодировку UTF-8.

На самом деле в винде поддержки UTF-8 нет, на сколько я знаю, ни один шрифт не поддерживает UTF-8,
и нет кодовой страницы для UTF-8.
(могу ошибаться)
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38059972
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv(могу ошибаться)
И ошибаешься. Причём по всем пунктам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060172
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMasterZiv(могу ошибаться)
И ошибаешься. Причём по всем пунктам.

Здесь пишут что нужно использовать Lucida Console.

А почему "по всем" пунктам?
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060183
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА почему "по всем" пунктам?
Э-э-э... Ты можешь назвать в чём MasterZiv прав? Я - нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060230
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господин, с профилем Delphi разработчика.

Давайте вместе с вами откроем хоть какой-то р есурс
где описан фонт и из чего он состоит. Ну хотя-бы тут.

http://msdn.microsoft.com/en-us/library/windows/desktop/dd145037%28v=vs.85%29.aspx

И почитаем где там и чего указано про utf-8.

По сабжу, если правы то и я не буду возражать.
Но давайте-ж в техническом русле... Как-то так вобщем.

C уважением,
mayton
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060288
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДавайте вместе с вами откроем хоть какой-то ресурсгде описан фонт и из чего
он состоит. Ну хотя-бы тут.

http://msdn.microsoft.com/en-us/library/windows/desktop/dd145037%28v=vs.85%29.aspx

И почитаем где там и чего указано про utf-8.
Прочитал. Нигде и ничего. Как, собственно, и ожидалось. А вот MasterZiv утверждает обратное:
[/quot MasterZiv]Он должен быть не только юникодным, а конкретно поддерживать кодировку
UTF-8.[/quot]
Т.е. что шрифт может (и должен) поддерживать utf-8.

Будете утверждать, что он прав?

Шрифт это набор глифов. Он либо содержит глифы для первых 256 символов, либо больше. UTF-8
- многобайтная кодировка для Unicode. Чтобы отобразить текст в кодировке UTF-8, её нужно
сначала преобразовать в Unicode (UCS2 или UCS4), а уже потом по полученному коду найти
нужный глиф. Если он в данном шрифте есть. Это может сказать GetFontUnicodeRanges(). Ну а
если в шрифте нет глифа для данного кода, то на экране будет квадрат. Что и видит ТС.

Команда chcp задаёт способ преобразования из однобайтной кодировки в unicode перед
выводом. Так что получить на экране мусор можно если
а) Кодировка данных при вызове ANSI-функций вывода не соответствует установленной сhcp.
б) Unicode-функциям скармливается мусор вместо ожидаемого виндой UTF-16.
в) Шрифт консольного окна не имеет глифов для выводимых символов.

Возражения?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060380
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivDimitry Sibiryakovпропущено...

А консольный шрифт у тебя юникодный?..


Он должен быть не только юникодным, а конкретно поддерживать кодировку UTF-8.

На самом деле в винде поддержки UTF-8 нет, на сколько я знаю, ни один шрифт не поддерживает UTF-8,
и нет кодовой страницы для UTF-8.
(могу ошибаться)
Дмитрий. Я квотирую еще раз ваш спор.

Я считаю что полноценной поддержки для UTF-8 предоставить
технически невозможно по самому определению и по свойствам
UTF-8. В эту кодировку заложена принципиальная неограниченность
набора символов. Wiki пишет что существуют несколько стандартов
по отображению utf-8 на 2,4,6 байт других кодировок но это частные
случаи и допущения и прочие договорённости.

Поэтому обеспечить шрифт поддержкой utf-8 на 100% технически
невозможно! Это - ваша ошибка! Поймите это.
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060505
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonWiki пишет
Не читайте заборы. Читайте первоисточники www.unicode.org
Basic plane вполне реально обеспечить, а расширенные практически никому не нужны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060515
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за basic plane?

Поиск по site:www.unicode.org AND basic AND plane ничего не даёт.
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060520
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧто за basic plane?
Это первые 65635 символов, покрываемые UCS2.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060615
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не работает виндовая консоль с utf8 - вывод хаотически "рубится".
В моих экспериментах, как правило, на первом кириллическом символе. Перенаправление - работает, вывод - нет.
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060623
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНе работает виндовая консоль с utf8 - вывод хаотически "рубится".

Типичный симптом переполнения буфера. Кто-то забыл учесть существование многобайтных
кодировок.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060644
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тестовый пример. У меня, откомпилированный BCB или MSVC2010 и запущенный в окне "cmd /w" со шрифтом Lucida Console, стабильно выводит "абвгде" во всех кодировках, какие мне в голову пришли.
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060692
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmaytonЧто за basic plane?
Это первые 65635 символов, покрываемые UCS2.

А кто будет создавать шрифт с поддержкой 64 К символов?
Этож ресурс! Он будет для каждого размера шрифта растеризоваться
и прогружаться в память. При том что нормальному человеку
хватает поддержки 2-3 языков в операционке.
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060717
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОн будет для каждого размера шрифта растеризоваться и прогружаться в память.

С какого бы перепою он растеризовался?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38060718
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmaytonОн будет для каждого размера шрифта растеризоваться и прогружаться в память.

С какого бы перепою он растеризовался?..

А иначе его на экране не видно.
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38061028
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я конечно не спец в этом вопросе, но насколько знаю, что еще важно озвучить что за винда. Вероятно, что в XP, где utf16 будут траблы, а вот в vista/7 может и заведется на сухую без преобрахзований (но не уверен).
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38061037
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldВероятно, что в XP, где utf16 будут траблы
Почему у меня в ХР с вышеприложенным примером траблов нет? Руки?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38061040
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, да там оказывается баг в консоли, а вы стены головой пробиваете.
Оцените тред
http://connect.microsoft.com/VisualStudio/feedback/details/696663/cout-cannot-print-utf-utput-to-console
...
Рейтинг: 0 / 0
VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
    #38061041
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
форум поел ссылку.
cout-cannot-print-utf-utput-to-console
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / VS2012, C++, Вывод utf-8 в консоль. Без доп библиотек.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]