Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/88: Рейтинг темы: голосов - 88, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 11.04.2014
Сообщений: 22

Неверная кодировка при выводе в консоль

14.05.2015, 19:26. Показов 17016. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В моей программе нужно использовать очищение экрана - clrscr
но тогда весь русский текст, который выводится на консоль становится какой-то абракадаброй в не понятной кодировке.
Вот такой текст выводится, хотя программно задан другой, тоже самое, и когда я записываю значения в файл.
Ќ*¦¬ЁвҐ 1 ¤«п б®§¤**Ёп д*©«*
Ќ*¦¬ЁвҐ 2 ¤«п Їа®б¬®ва* д*©«*
Ќ*¦¬ЁвҐ 3 ¤«п Ї®ЁбЄ* а*Ў®в*ЁЄ®ў Ї® **Ё¬Ґ*®ў**Ёо жҐе
Ќ*¦¬ЁвҐ 4 ¤«п Ї®ЁбЄ* а*Ў®в*ЁЄ®ў Ї® §*а*Ў®вЄг
Ќ*¦¬ЁвҐ 5 ¤«п Ї®ЁбЄ* а*Ў®в*ЁЄ®ў Ї® д*¬Ё«ЁЁ
Ќ*¦¬ЁвҐ 6 ¤«п ўл室* Ё§ Їа®Ја*¬¬л
‚лЎҐаЁвҐ Їг*Єв ¬Ґ*о:

Может быть всё дело в этих настройках? уж больно глаз режет эта 866(OEM). Как это можно поправить?
Если залезть в код через блокнот, то все содержимое writeln переходит в такую же кодировку
Миниатюры
Неверная кодировка при выводе в консоль  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.05.2015, 19:26
Ответы с готовыми решениями:

Переход на следующую строку при выводе в консоль
У меня вопрос, как перевести текст на следущую строку вот в таком случае If x=1 then write ('Вы ошиблись. вот здесь нужен переход на...

Неверная кодировка в строковых переменных
Всем привет! Пишу сам модуль для вывода небольшого изображения из текстового файла где каждая строка - относительные координаты координаты...

Неверная кодировка при записи в файл
помогите доделать программу, пожалуйста. Прога выводит данные о кругах, записывает в файл, но иероглифами...:hysteric: и без поиска...

5
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
15.05.2015, 22:15
Это значит, что редактор Pascal использует кодовую страницу CP866 (OEM, DOS). Если такой текст просмотреть в редакторе, который использует кодовую страницу CP1251 (Windows-1251), то, как раз, получатся такие кракозябры.
0
0 / 0 / 0
Регистрация: 11.04.2014
Сообщений: 22
16.05.2015, 01:02  [ТС]
а как можно исправить это?
0
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
16.05.2015, 01:31
Нужно либо настроить редактор Pascal на кодовую страницу CP1251, если есть такая возможность. Либо, для просмотра текста в кодировке CP866 можно использовать редактор, который поддерживает эту кодовую страницу. Например, Notepad++.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.05.2015, 06:28
Цитата Сообщение от kurson Посмотреть сообщение
но тогда весь русский текст, который выводится на консоль становится какой-то абракадаброй в не понятной кодировке.
Перекодировать текст при записи в файл.
Процедура перекодировки есть здесь.
Конвертация строк
0
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
16.05.2015, 10:10
Да, можно через перекодировку сделать. Но часто бывает удобнее, если настроить саму консоль на нужную кодовую страницу. Например, в Delphi редактор использует страницу CP1251, а кодовая страница консоли настроена в соответствии с консольными настройками Windows - это по предустановкам CP866. Я лично в этом случае прямо в коде программы выполняю переключение консоли на ту же кодовую страницу, в которой работает редактор Delphi - т. е. на CP1251. Вот таким образом:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
var
  S : String;
begin
  {Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  Если после переключения русские буквы показываются неверно,
  следует открыть системное меню консольного окна - щелчком мыши в левом
  верхнем углу окна консоли и выбрать:
  Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".}
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  Writeln('Этот текст правильно показывается на кодовой странице CP1251.');
  Write('Задайте текст: ');
  Readln(S);
  Writeln('Вы ввели текст: ', S);
 
  Readln;
end.
Во Free Pascal, видимо, редактор работает со страницей CP866. Вообще-то это та же кодовая страница в которой по предустановкам должна работать консоль Windows... Если консоль оказывается на кодовой странице CP1251, а нужно - CP866, то переключить, соответственно, можно так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
...
 
uses
  Windows;
 
var
  S : String;
begin
  SetConsoleCP(866);
  SetConsoleOutputCP(866);
 
  Writeln('Этот текст правильно показывается на кодовой странице CP866.');
  Write('Задайте текст: ');
  Readln(S);
  Writeln('Вы ввели текст: ', S);
 
  Readln;
end.
Добавлено через 11 минут
Вот, нашёл обсуждение, как раз по такой же теме: Модуль CRT, clrscr и кириллица
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.05.2015, 10:10
Помогаю со студенческими работами здесь

Неверная кодировка при выводе на консоль
Добрый день. Немножко не понятен момент в моем тренировочном коде. using System; using System.IO; class demo { ...

Неверная кодировка текста при выводе из файла на страницу
Здравствуйте.Столкнулся с проблемой кодировки текста загруженного из текстового файла на страницу.Появилось то, что показано на скрине.Как...

Кодировка при выводе в консоль
Работаю с сокетами. Подключаюсь к хосту и принимаю данные. Ниже кусок кода из программы: def getsocketdata(self,somesocket): ...

Неправильная кодировка при выводе на консоль
Ребята, подскажите плиз, как сделать чтобы в консольных предложениях в Fortran русский язык правильно отображался. Знаю, что в с++ нужно...

Неправильная кодировка при выводе на консоль
Сообственно сабж Как можно исправить?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru