Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2009, 17:58   #1
selevit
Новичок
Джуниор
 
Регистрация: 24.10.2009
Сообщений: 5
По умолчанию Русский текст в консоли

Все наверно сталкивались с такой проблемой, когда выводишь русский текст в консольное приложение, а выводятся аброказябры вместо текста)
в просторах сети очень много описаний различных функций насчет этого дела, но я решил поделиться, на мой взгляд самой простой

Код:
setlocale(LC_ALL, "Russian");
Решил запостить, т.к. во многих топиках, просмотренных мной, даже модераторы пишут текст транслитом)

Последний раз редактировалось selevit; 24.10.2009 в 18:11.
selevit вне форума Ответить с цитированием
Старый 24.10.2009, 21:08   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Да, проблема очень распространенная. К сожалению, у меня даже с этой строкой выводится жуткая тарабарщина! (Билдер 6)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 24.10.2009, 21:20   #3
selevit
Новичок
Джуниор
 
Регистрация: 24.10.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Да, проблема очень распространенная. К сожалению, у меня даже с этой строкой выводится жуткая тарабарщина! (Билдер 6)
насчет 6-го билдера не знаю, но на VS2008 все работает отлично.

З.Ы. эта строка должна находиться в начале функции main.
selevit вне форума Ответить с цитированием
Старый 24.10.2009, 21:46   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

У меня даже когда в main'е только setlocale, cout да cin.get - все равно не работает как надо.
Надеюсь, по дальнейшим комментариям прояснится, это только моя проблема или общенародная (билдеровская) беда!
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 24.10.2009, 22:01   #5
selevit
Новичок
Джуниор
 
Регистрация: 24.10.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
У меня даже когда в main'е только setlocale, cout да cin.get - все равно не работает как надо.
Надеюсь, по дальнейшим комментариям прояснится, это только моя проблема или общенародная (билдеровская) беда!
поставь себе VS или купи бубен и пляши с ним перед компиляцией программы
selevit вне форума Ответить с цитированием
Старый 24.10.2009, 22:47   #6
lennon
Заблокирован
 
Регистрация: 18.11.2007
Сообщений: 254
По умолчанию

Цитата:
Сообщение от selevit Посмотреть сообщение
поставь себе VS или купи бубен и пляши с ним перед компиляцией программы
сам ты бубен. в VS по умолчанию используеться Unicode, а в билдере нет.

selevit Выводимый текст должен быть в кодировке Unicode!
lennon вне форума Ответить с цитированием
Старый 24.10.2009, 23:17   #7
selevit
Новичок
Джуниор
 
Регистрация: 24.10.2009
Сообщений: 5
По умолчанию

[QUOTE=lennon;372151]сам ты бубен. в VS по умолчанию используеться Unicode, а в билдере нет.

selevit Выводимый текст должен быть в кодировке Unicode![/QUO
про бубен это я так, на своей видимо волне) пора уже бы переходить на международный стандарт кодировки, вопрос - обновляется ли сейчас билдер? и можно ли в нем по умолчанию установить юникод? если да то поделись с людьми, а я юзаю VS и не заморачиваюсь с кодировками

Последний раз редактировалось selevit; 24.10.2009 в 23:19.
selevit вне форума Ответить с цитированием
Старый 25.10.2009, 00:25   #8
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

#define UNICODE
По моему это везде поддерживается
Разница в том что в таблицах импорта имена процедур заменяются на юникодовые прототипы. Часто это происходит неявно для пользователя.
Скажем если у вас есть такая функция:
MessageBox(0,"Hello world","HW",0);
То в случае если у вас не используется юникод - будет вызвана(и соответственно импортирована функция MessageBoxA - ANSII, а в случае использования юникода будет импортирована функция MessageBoxW - Unicode аналог MessageBoxA, как не сложно догадаться. Что касается функций стандартной библиотеки - не знаю, но думаю механизм такой же.
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 25.10.2009, 00:45   #9
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Ivan_32 Посмотреть сообщение
#define UNICODE
По моему это везде поддерживается
Разница в том что в таблицах импорта имена процедур заменяются на юникодовые прототипы. Часто это происходит неявно для пользователя.
Скажем если у вас есть такая функция:
MessageBox(0,"Hello world","HW",0);
То в случае если у вас не используется юникод - будет вызвана(и соответственно импортирована функция MessageBoxA - ANSII, а в случае использования юникода будет импортирована функция MessageBoxW - Unicode аналог MessageBoxA, как не сложно догадаться. Что касается функций стандартной библиотеки - не знаю, но думаю механизм такой же.
Речь идёт о кодировке текста в редакторе IDE )
Если говорить о #define UNICODE и макросов MessageBox и т.д., то в стандартной библиотеке это частично справедливо благодаря tchar.h, но, увы, только для С-библиотеки(то есть всякие там _tcscpy, ...)
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
мемо не отображает русский текст. lg12 Помощь студентам 9 06.03.2013 18:10
Русский текст в теле письма sapogan Общие вопросы Delphi 8 30.07.2009 22:56
заменить Delete record на русский текст PashaVolk БД в Delphi 2 01.06.2009 19:03
TD не распознает русский текст Natalia-xxx- Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 05.03.2009 15:22
Русский текст в виде ??? ? ?? ????? www3 PHP 5 15.05.2008 14:30