Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Кирилица в консоли

Ответить
Настройки темы
C/C++ - Кирилица в консоли

Новый участник


Сообщения: 18
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 03-02-2009
Описание: Чтобы тема не разросталась. Оформлю надлежащим образом...
Как сделать, чтобы консольные проги, написанные на С++, понимали русский... Я вообще новичок в программинге, можно по подробней??? Заранее спасибо!

-------
Единственный способ изучить новую программу-пользоваться ей как можно чаще... (с)YackoN.


Отправлено: 11:02, 25-12-2003

 

Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Еще об одном способе узнал:
Цитата:
SetConsoleOutputCP

The SetConsoleOutputCP function sets the output code page used by the console associated with the calling process. A console uses its output code page to translate the character values written by the various output functions into the images displayed in the console window.


BOOL SetConsoleOutputCP(
UINT wCodePageID
);

Parameters
wCodePageID
[in] Identifier of the code page to set. The identifiers of the code pages available on the local computer are stored in the registry under the following key.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage


Return Values
If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks
A code page maps 256 character codes to individual characters. Different code pages include different special characters, typically customized for a language or a group of languages. If the current font is a fixed-pitch Unicode font, SetConsoleOutputCP changes the mapping of the character values into the glyph set of the font, rather than loading a separate font each time it is called. This affects how extended characters (ASCII value greater than 127) are displayed in a console window. However, if the current font is a raster font, SetConsoleOutputCP does not affect how extended characters are displayed.

To determine a console's current output code page, use the GetConsoleOutputCP function. To set and retrieve a console's input code page, use the SetConsoleCP and GetConsoleCP functions.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:25, 26-01-2005 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Savant
Я только добавлю, что
Цитата:

Client: Included in Windows XP, Windows 2000 Professional, and Windows NT Workstation.
Server: Included in Windows Server 2003, Windows 2000 Server, and Windows NT Server.
Header: Declared in Wincon.h; include Windows.h.
Library: Use Kernel32.lib.
Обратите внимание, про Win 9x нет ни слова. Хотя они уже вымирают, конечно.

А вообще subj уже обсуждался, в подробностях, даже дважды, емнип...

Отправлено: 22:52, 26-01-2005 | #12

Etenity


Сообщения: n/a

Профиль | Цитировать


Помогите плиз. Я считываю спомощю функции fopen, fread, fwrite с ASCII файла данные, но например в ShowMessage они отображаются как ANSI текст. И вот я никак немогу найти как зделать чтобы текст в переменой типа char или String перевести с ASCII в ANSI или с ANSI в ASCII.

Отправлено: 14:49, 29-03-2005 | #13


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


а MSDN для кого ? http://msdn.microsoft.com

CharToOem Function

The CharToOem function translates a string into the OEM-defined character set.

Syntax
BOOL CharToOem(
LPCTSTR lpszSrc, LPSTR lpszDst);
Parameters
lpszSrc [in] Pointer to the null-terminated string to translate.

lpszDst [out] Pointer to the buffer for the translated string. If the CharToOem function is being used as an ANSI function, the string can be translated in place by setting the lpszDst parameter to the same address as the lpszSrc parameter. This cannot be done if CharToOem is being used as a wide-character function.
OemToChar Function


The OemToChar function translates a string from the OEM-defined character set into either an ANSI or a wide-character string.

Syntax

BOOL OemToChar(


LPCSTR lpszSrc, LPTSTR lpszDst);
Parameters


lpszSrc [in] Pointer to a null-terminated string of characters from the OEM-defined character set.

lpszDst [out] Pointer to the buffer for the translated string. If the OemToChar function is being used as an ANSI function, the string can be translated in place by setting the lpszDst parameter to the same address as the lpszSrc parameter. This cannot be done if OemToChar is being used as a wide-character function.

Последний раз редактировалось Drongo, 03-02-2009 в 10:32.


Отправлено: 15:02, 29-03-2005 | #14

Etenity


Сообщения: n/a

Профиль | Цитировать


О спасибо тебе Старожил Не пойму как я не мог найти ету функцию в справке? Хотя искал все что связано с словом ОЕМ...

Отправлено: 01:09, 30-03-2005 | #15


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


вот, очередной тупой вопрос !!! такая проблема:

Код: Выделить весь код
#include <iostream>
using namespace std;
int main()
{
   cout <<"привет";
   return 0;
}
а в место привет, какие-то "закаручки" если в место привет, написать hello, то отобразится hello !!!!!!!!!!

Последний раз редактировалось Drongo, 03-02-2009 в 10:11. Причина: [code]...[/code]


Отправлено: 14:48, 29-09-2006 | #16


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


sasha11
А вот у меня "привет" пишет! А почему? потому что вопрос кодировки ортогонален вопросу языка, а зависит только от среды. У меня всё в UTF8 - и текст программы, и кодировка в консоли. У вас же исходный текст в windows-1251 (а следовательно и слово "привет"), а стандартная кодировка в консоли windows - oem866 (досовская). Отсюда и все проблемы.

Есть как минимум 4 способа побороть эту проблему. Все они уже на этом форуме были перечислены не раз. Я уже говорил вам, что стоит пользоваться поиском прежде чем задавать вопросы? В следующий раз буду просто тупо закрывать тему.

Ссылки на существующие темы с тем же вопросом:
http://forum.oszone.net/showthread.php?t=64366
http://forum.oszone.net/showthread.php?t=30066
http://forum.oszone.net/showthread.php?t=29861
http://forum.oszone.net/showthread.php?t=42553
http://forum.oszone.net/showthread.php?t=47358
http://forum.oszone.net/showthread.php?t=44139

-------
http://ivank.ru


Последний раз редактировалось ivank, 29-09-2006 в 20:25.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:03, 29-09-2006 | #17


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


все понял, просто я в поиске ввел "кодировка в C++", "кодировка", и ничего нужного не нашел !!! в следующий раз буду делать более расширенные запросы(в поиске) !!!!!!

Отправлено: 15:38, 29-09-2006 | #18


Аватара для Durson

Devil may Cry


Сообщения: 451
Благодарности: 45

Профиль | Отправить PM | Цитировать


Учитывая, что архив с файлом автор удалил из своего сообщения (видимо из-за нехватки места), а скачивать неоткуда, было принято решение оформить шапку темы, в котором будет выложено содержимое заголовочного файла.

Если кому надо, то могу кинуть билиотеку что бы после компиляции программы на Microsoft Visual C++ 6.0 она отображала шрифт кирилицы. Создать заголовочный файл russian.h Содержимое russian.h
Код: Выделить весь код
#include <iostream.h>
#include <windows.h>

char* Rus(const char* text);

char bufRus[256];
char* Rus(const char* text)
{
   CharToOem(text, bufRus);
   return bufRus;
}
Подключать
Код: Выделить весь код
#include "russian.h"

Последний раз редактировалось Drongo, 25-01-2009 в 20:42. Причина: Добавил авторский код в шапку темы. ;)))

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:02, 05-10-2008 | #19


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Durson, а откомпилированая программа, если её запустить на другом компе, не потребует при запуске эту библиотеку?

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 21:11, 05-10-2008 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Кирилица в консоли

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Кирилица на DVD Guest Хочу все знать 3 08-05-2004 14:59
Кирилица и ересь bdn Microsoft Windows 95/98/Me (архив) 3 20-01-2004 14:02
странная кирилица dreamparadise Программирование и базы данных 2 28-07-2003 12:33
Кирилица в прогах Alex VZ Общий по Linux 20 19-07-2003 17:09
Кирилица и Сидиром Pink Punk Общий по Linux 11 14-03-2003 06:03




 
Переход