информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsЗа кого нас держат?Все любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Мнение: 25.04.02 07:15  Число просмотров: 931
Автор: LiNX Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1. Я имел в виду Билдер 3 (1998г) - я не работаю в среде Борланда, поэтому, что у меня "завалялось", на том, я и проверил ;). А программа обычная - "Привет мир !". ;)

З.Ы : Штраф мой (нечаяно) ;)
ЗЗЫ: Более развернутый ответ дать не успеваю (тороплюсь) - но насколько я понимаю он и не нужен, и так все понятно .
<programming>
[C++] Как в консольном приложении вывести строку на русском языке ? 24.04.02 11:52    Штраф: 15 [KMiNT21]
Автор: blade Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как в консольном приложении вывести строку на русском языке ?
Консоль пишется под MS VS 6 SP5. На русском Windows 2000 Server.
[C++] Сделай 2 файлика с алфавитами. 08.05.02 08:36  
Автор: Killer{R} Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Сделай в ФАРе два файлика, в одном русский алфавит написанный в кодировке винды, во втором - доса потом из программы их спокойно читаешь и юзаешь что нить вроде...

void __fastcall formout(char *str)
{
char *strx=(char *)malloc(strlen(str)+1);
strcpy(strx,str);strx[strlen(str)]=0;
for(int i=0;i<strlen(str);i++)
{
char ch=str[i];
if(strrchr(&tab1[0],ch)!=NULL){ch=tab2[(strrchr(&tab1[0],ch)-&tab1[0])];}
strx[i]=ch;
}
printf(strx);
}
где tab1 - из файлика в кодировке WIN - а tab2 - DOS
[C++] А в чем проблема?? Разве что кодировка другая, и все. 24.04.02 14:08  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
Вот в этом то и проблемма. 24.04.02 14:13  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Сам как не ухитрялся - не выходит русские буковки вывести. И ленгвидж ставил и ф-ии какие то использовал, и еще хрен знает что пробовал. Загадка...
Вот в этом то и проблемма. 24.04.02 15:41  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
так строки набирай не в Блокноте, а в досовских редакторах
а ещё есть утилиты для конвертирования текста Win->Dos
Ну блин 24.04.02 15:48  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Это под Линухом удообно в одном редакторе набивать, а потом мэйком компилить. А под виндами, знаешь ли, сидишь себе спокойно в ДевСтудио и о других редакторах не думаешь. В том то и фигня, что среда - компилер (раз там такая супер пупер интеграция) должна сама кодировочку правильную подставить. А не ставит... падла :)
А ты бы шрифт выставил другой... (не помню как он точно называется).. Там DOS кодировка будет. 25.04.02 15:47  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
On - Terminal 30.04.02 19:42  
Автор: eugeneme Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Ну блин 24.04.02 19:39  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
> Это под Линухом удообно в одном редакторе набивать, а потом
> мэйком компилить. А под виндами, знаешь ли, сидишь себе
> спокойно в ДевСтудио и о других редакторах не думаешь. В
> том то и фигня, что среда - компилер (раз там такая супер
> пупер интеграция) должна сама кодировочку правильную
> подставить. А не ставит... падла :)

Не должен компилятор/препроцессор/IDE кодировки менять (не их это дело ). Это должен делать сам программер, например через эти API:

OemToChar
CharToOem
OemToCharBuff
CharToOemBuff

Иногда может пригодится SetFileApisToOEM
Мнение: 24.04.02 21:01  
Автор: LiNX Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1. А что борланда консольки правильно выводят русскую кодировку ?
2. Если посмотреть внутрь кодировок, то оказывается, что VC 6 правильно определяет кодировку (русскую, под Windows), проблема уже в оси, которая или внутренне неправильно выводит кодировку, или же не имеет шрифт для правильного отображения кодировки, а поэтому использует "заменитель".
3. Еще можно добавить, что выводить в Windows консольное окно DOS-ую кодировку (что происходит сейчас и под что делается попытка "подогнать ответ") - ненормально, а посему п.2. имеет право на существование.
Мнение: 24.04.02 22:28  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
> 1. А что борланда консольки правильно выводят русскую
> кодировку ?
Ты про компилятор Борланда под ДОС? Дык Win32-консольное и ДОС-приложение это же разные вещи. Для ДОС-прог cp866 родная.

> 2. Если посмотреть внутрь кодировок, то оказывается, что VC
> 6 правильно определяет кодировку (русскую, под Windows),
> проблема уже в оси, которая или внутренне неправильно
> выводит кодировку, или же не имеет шрифт для правильного
> отображения кодировки, а поэтому использует "заменитель".
В ОС проблемы нет. Это у нее ее фича :)
Консольные API типа WriteConsole используют текущую кодовую страницу консоли, которая по умолчанию OEM DOS(866) (для совметсимости наверное).

> 3. Еще можно добавить, что выводить в Windows консольное
> окно DOS-ую кодировку (что происходит сейчас и под что
> делается попытка "подогнать ответ") - ненормально, а посему
> п.2. имеет право на существование.
Для NT/2K есть нормальный способ - SetConsoleOutputCP(1251) и выводи текст в ANSI кодировке. RTFM короче :)
Мнение: 24.04.02 23:07  
Автор: LiNX Статус: Незарегистрированный пользователь
Отредактировано 24.04.02 23:10  Количество правок: 1
<"чистая" ссылка>
1. Имеется в виду (разумеется) не DOS-борланд. Более того, я прежде чем высказать такое мнение проверил версию - на чем смог ...

2. В ОС проблемы может и нет, но может и есть ... Насчет фичи - откуда такие мысли ...

3. Вопрос не стоит в том, возмножен ли вывод "на русском" в консоль - здесь написать свою функцию перекодировки не займет больше получаса, вопрос в том, что VC 6 компилирует код в расчете на 1251 (или его модификацией) кодировку, а windows выводит его как 866 (или его модификацией) ...
Мнение: 25.04.02 01:05  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
> 1. Имеется в виду (разумеется) не DOS-борланд. Более того,
> я прежде чем высказать такое мнение проверил версию - на
> чем смог ...
Я так и не понял, какой ты Борланд имеешь ввиду :)
Можно поподробнее (привести код и версию компилятора)?
Я тоже ради интереса проверил на BC 5.0 - результат такой же как и в VC 6.0

> 2. В ОС проблемы может и нет, но может и есть ... Насчет
> фичи - откуда такие мысли ...
Все мысли из MSDN :)
WriteConsole
Windows NT: This function uses either Unicode characters or 8-bit characters from the console's current code page. The console's code page defaults initially to the system's OEM code page. To change the console's code page, use the SetConsoleCP or SetConsoleOutputCP functions, or use the chcp or mode con cp select= commands.

> 3. Вопрос не стоит в том, возмножен ли вывод "на русском" в
> консоль - здесь написать свою функцию перекодировки не
> займет больше получаса, вопрос в том, что VC 6 компилирует
> код в расчете на 1251 (или его модификацией) кодировку, а
естественно - в какой кодировке файл дают компилятору, в такой он его и компилит. Не может же он кодировку менять :))

> windows выводит его как 866 (или его модификацией) ...
Точнее windows выводит его в console's current code page

З.Ы, Спор ни о чем - вот кто-то уже штрафует...
Мнение: 25.04.02 07:15  
Автор: LiNX Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1. Я имел в виду Билдер 3 (1998г) - я не работаю в среде Борланда, поэтому, что у меня "завалялось", на том, я и проверил ;). А программа обычная - "Привет мир !". ;)

З.Ы : Штраф мой (нечаяно) ;)
ЗЗЫ: Более развернутый ответ дать не успеваю (тороплюсь) - но насколько я понимаю он и не нужен, и так все понятно .
[c++] всем большое спасибо. 26.04.02 14:25  
Автор: blade Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Теперь все заработало. Использовал CharToOem.
Еще раз спасибо.
Blade.
Вашим салом вам же по мусалам :) 24.04.02 20:55  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
> Не должен компилятор/препроцессор/IDE кодировки менять (не
> их это дело ). Это должен делать сам программер...

В принципе согласен. Черт... а функции то я эти применял... но за х.з. сколько лет не додумался использовать их для вывода текста в консоли... ёёёёё... пойду повешусь.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach