Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.81
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

Юникод символ в консоли - C++

08.06.2013, 01:05. Просмотров 5259. Ответов 8
Метки нет (Все метки)

Здорова!
Есть вопрос, от можно ли в консоли как то вывести юникод символы? Допустим есть код символа в юникод U+2660 и как мне его вывести в консоли через программу?
Пробовал отак cout <<(char)(+2660)<<endl; выводит не тот символ, а если U добавляешь, то ошибка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2013, 01:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Юникод символ в консоли (C++):

Юникод в консоли visual studio 2010? - C++
Добрый вечер. Сижу, читаю в интернете, но никак не могу найти решение некоторой проблемы. Предположим, в таблице аски нет того символа,...

Не отображается символ Юникода в консоли - C++
Всем привет. Скажите, как правильно вывести символ квадрата в консоли (0x00B2)? #include &lt;iostream&gt; #include &lt;locale&gt; #include...

Вывести символ квадрата в консоли - C++
Доброго времени суток, погуглил - не нашел, вопрос : как вывести символ квадрата в консоли visual C++, никак не получается спасибо!:)

Выделить цветом символ в консоли - C++
Всем привет. Нужно в массиве выделять другим цветом определенный символ. enum COLOR {BLUE = 9, GREEN, TURQUOISE, RED, VIOLET, YELLOW}; ...

Как стереть символ в консоли - C++
Есть задачка: Напишите короткую программу, которая запрашивает рост в дюймах и преобразует их в футы и дюймы. Программа должна...

Как заставить символ двигаться по консоли? - C++
Приветствую всех! Есть листинг программы, цель её - заставить символ &quot;|&quot; двигаться вправо при нажатии &quot;D&quot; или &quot;d&quot;. Но я не пойму логику в...

8
Dr_Quake
Заблокирован
08.06.2013, 04:09 #2
В винде нету юникода в консоли адекватно, там только хаком вида System(chcp 65001) и выводом конвертированного в UTF-8 как "обычной" строки, при том ещё шрифт надо сначала сменить на юникодный(вроде arial *) в окне, смотри в общем примеры конвертирования CharToOem в прилепленных и делай то же, но в UTF-8 или прямо свой UTF выводи, соответственно для w строк надо UTF-16 в UTF-8. В никсах спокойно выводится как угодно, но чтобы адекватно прямо из кода через U/wchar - setlocale надо сначала использовать.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
08.06.2013, 05:48 #3
В Visual Studio можно сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <io.h>
#include <fcntl.h>
#include <Windows.h>
int main(){
 
    _setmode(_fileno(stdout), _O_U8TEXT);
    _setmode(_fileno(stdin), _O_U8TEXT);
    //SetConsoleCP(CP_UTF8);
    //SetConsoleOutputCP(CP_UTF8);
    wchar_t * str=L"Моя строка\x2660\n";
    std::wcout<<str<<std::endl;
    return 0;
}
1
Убежденный
Ушел с форума
Эксперт С++
15697 / 7207 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
08.06.2013, 11:25 #4
Croessmah, этот способ не будет работать на нерусских локализациях Windows,
если только явно не прописать русский язык для программ, не поддерживающих Unicode,
или не установить для консоли подходящий шрифт. Кстати, почему-то этот момент не
упомянут в известной теме Русские шрифты в консоли.
1
Croessmah
08.06.2013, 12:03
  #5

Не по теме:

Цитата Сообщение от Убежденный Посмотреть сообщение
этот способ не будет работать на нерусских локализациях Windows,
если только явно не прописать русский язык для программ
Про русский язык тут речи не идет

1
Убежденный
08.06.2013, 12:15
  #6

Не по теме:


Цитата Сообщение от Croessmah Посмотреть сообщение
Про русский язык тут речи не идет
Русский язык - лишь частный случай.
Речь о том, что не на всех локализациях Windows можно вывести произвольно
взятый символ Юникода, не проделав определенных манипуляций с параметрами
самой консоли или региональными настройками.

Я хотел подчеркнуть, что если вы пишете интернациональное приложение,
на переносимость данного способа рассчитывать нельзя.

2
Dr_Quake
Заблокирован
08.06.2013, 14:29 #7
Этот способ не работает. Вообще. Никак. Тот что я привёл тоже. Проверил все методы - нет, ввыводятся символы ТОЛЬКО текущей non-unicode локали, так что считаем дружно что в винде невозможно в консоли выводить <8битной кодировки, шрифт менять на юникодный не помогает...

В общем нету в винде в консоли Unicode, и всё тут, только язык текущей локали, хоть в 8bit выводи, хоть в UTF16 - всё что не в локали будет ??? или другие символы. От этого очень давно уже FAR страдает.

Сразу же предлагаю способ обхода - rxvt-native из пака cygwin, у него при выставлении правильной локали и шрифта всё в порядке.
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
08.06.2013, 21:36  [ТС] #8
Dr_Quake, Да работает я проверял
0
Dr_Quake
Заблокирован
08.06.2013, 22:22 #9
Проверь с русским и китайским, например, одновременно - поймёшь в чём суть.
0
08.06.2013, 22:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2013, 22:22
Привет! Вот еще темы с ответами:

Узнать какой отображён символ в консоли по координатам - C++
Здравствуйте, допустим программа выводит какие-то символы на экран консоли. Есть ли такой способ программно узнать (наверно это...

Как вывести символ бесконечности(∞) в консоли с помощью cout - C++
Как вывести символ бесконечности(∞) в консоли с помощью cout?

Цикл: каждый символ символьного массива вывести на новой строке консоли - C++
Доброго всем здравия, споткнулся на ровном месте, цикл do while отказывается делать, то что я хочу char S = &quot;gcfhgcf hdhgf 4754...

Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ) - C++
Решил спустя некоторый промежуток времени попрактиковаться в c++. Написать программу, где при нажатии кнопок со стрелками по консоли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru