Free Paskal, Geany, Кирилица

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Free Paskal, Geany, Кирилица

Сообщение Яра » 07.10.2017 01:03:47

Добрый день!
Помогите, пожалуйста, уже месяц не могу решить проблему с выводом кириллицы в Geany. В самом Паскале все окей, а Geany - козябры...
Paskal
Изображение Изображение

Geany
ИзображениеИзображение
Яра
новенький
 
Сообщения: 13
Зарегистрирован: 07.10.2017 00:43:31

Re: Free Paskal, Geany, Кирилица

Сообщение Лекс Айрин » 07.10.2017 11:15:51

Надо подобрать кодировку текста. Попробуй, для начала, пересохранить исходный текст в CP886.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Free Paskal, Geany, Кирилица

Сообщение Яра » 08.10.2017 11:04:04

Лекс Айрин писал(а):Надо подобрать кодировку текста. Попробуй, для начала, пересохранить исходный текст в CP886.

Перепробовала, уже все кодировки... Все равно "козябры". Еще и длину слова удваивает. Если слово состоит из 11 символов, выводит - 22.
Изображение
В програмке тоже меняла кодировку - не помагает(
Изображение
Яра
новенький
 
Сообщения: 13
Зарегистрирован: 07.10.2017 00:43:31

Re: Free Paskal, Geany, Кирилица

Сообщение zub » 08.10.2017 11:55:20

Версия fpc 2.6.x?
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: Free Paskal, Geany, Кирилица

Сообщение vitaly_l » 08.10.2017 13:25:13

Яра писал(а):Если слово состоит из 11 символов, выводит - 22

Это значит, что слово записано в UTF8, но вывести Вы его пытаетесь в CP886, поэтому получается из 11 символов 22. Что-бы вывести слово, его нужно либо записать в кодировке CP886, либо преобразовать к кодировке CP886.

Соответственно для преобразования, Вам нужно выполнить такую команду:
s866 := Utf8ToCp866(s);
либо
sConsole := Utf8ToConsole(s);

И потом уже делать writeLn(s866); или writeLn(sConsole);

Яра писал(а):меняла кодировку - не помагает

Принцесса, чтобы записать слово в кодировке CP886 нужно не только указать CP886 кодировку, но и пересохранить, сам файл проекта, в кодировке CP886 и вместо получившихся, после пересохранения, кракозябр - написать Ваше искомое "информатика". Тогда всё будет правильно отображаться без дополнительных вышеприведённых функций. А иначе, Вы кодировку указали CP886, а файл со словом "информатика" остался в кодировке Utf8 и поэтому отображаются 22 кракозябры вместо 11 букв.


/
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Free Paskal, Geany, Кирилица

Сообщение Яра » 08.10.2017 22:12:35

zub писал(а):Версия fpc 2.6.x?

Нет, 3.0.2

Добавлено спустя 1 минуту 47 секунд:
vitaly_l писал(а):Это значит, что слово .../

Большое спасибо... Все заработало...Отдельное спасибо за принцессу)
Яра
новенький
 
Сообщения: 13
Зарегистрирован: 07.10.2017 00:43:31

Re: Free Paskal, Geany, Кирилица

Сообщение vitaly_l » 09.10.2017 09:45:54

Яра писал(а):Отдельное спасибо за принцессу)

Только не говорите, что после этих слов, я, обязан на Вас жениться, :roll: и мы счастливыми нарожаем 5-детей и умрём в один день с улыбками на устах, а дети улетят с этой планеты на межгалактическом корабле, который мы им подарим на день совершеннолетия самого младшего.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Free Paskal, Geany, Кирилица

Сообщение Яра » 11.10.2017 21:20:30

vitaly_l писал(а):Только не говорите, что после этих слов, я, обязан на Вас жениться, :roll: и мы счастливыми нарожаем 5-детей и умрём в один день с улыбками на устах, а дети улетят с этой планеты на межгалактическом корабле, который мы им подарим на день совершеннолетия самого младшего.

Нет-нет, что Вы :roll: А вот если Вы мне согласитесь помочь, если у мене что-то не будет получатся (имею в виду Paskal ), буду очень благодарна.
Яра
новенький
 
Сообщения: 13
Зарегистрирован: 07.10.2017 00:43:31

Re: Free Paskal, Geany, Кирилица

Сообщение SSerge » 12.10.2017 04:54:22

Яра, вы только учитывайте, что среди всех предложенных методов решения, на самом деле нет ни одного правильного. :D
Да-да, на смотря на то, что результат все таки получен, все предложенные решения относятся к пристраиваниям костылей, как на картинах Сальвадора Дали. Такой вот сюр.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Free Paskal, Geany, Кирилица

Сообщение vitaly_l » 12.10.2017 10:09:05

SSerge писал(а):нет ни одного правильного.
Да-да, на смотря на то, что результат все таки получен, все предложенные решения относятся к пристраиваниям костылей, как на картинах Сальвадора Дали. Такой вот сюр.

Каждый хочет, выглядеть круче "Сальвадора Доли" :roll: - особенно кода вопрос задаёт прекрасная и очаровательная принцесса.

Ну так расскажите и объясните, нам всем, как с версии 3.0 :wink: можно всё это делать и другими методами (костылями), а не занимайте жёсткий диск этого сервера своими бесполезными словами :evil: .

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Free Paskal, Geany, Кирилица

Сообщение Лекс Айрин » 12.10.2017 11:54:37

SSerge, укажи правильный?

Я, кстати, еще не закончил.... далее надо уже выставлять кодировку при компиляции и искал как это делать без явного указания в тексте. (директивой codepage).
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Free Paskal, Geany, Кирилица

Сообщение Vadim » 12.10.2017 15:06:33

Лекс Айрин
А чем Вам директива codepage не нравится? Указал её и всё, больше ничего делать не надо - utf8 будет правильно в виндовозной консоли воспроизводиться.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Free Paskal, Geany, Кирилица

Сообщение vitaly_l » 12.10.2017 15:40:01

Vadim писал(а):Лекс Айрин
А чем Вам директива codepage не нравится?

он априори ложно конвертирует в CP866, когда возвращается 22 символа вместо 11, т.к. не понимает для чего указывают $CODEPAGE :roll: и поэтому ему приходится конвертировать файл проекта в CP866, вместо правильного указания CODEPAGE.
Последний раз редактировалось vitaly_l 12.10.2017 16:09:48, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Free Paskal, Geany, Кирилица

Сообщение SSerge » 12.10.2017 16:09:29

vitaly_l писал(а):он априори ложно пишет туда CP866, когда возвращается 22 символа вместо 11, т.к. не понимает для чего указывают $CODEPAGE :roll: и поэтому всем приходится конвертировать файл проекта в CP866. Вместо того чтобы правильно указать CODEPAGE.


Теперь по-русски, пжалста, эту вашу аллюзию мыслей...
Что касается кодовой страницы CP866, она, например в компиляторах ветки 2.7 настолько странно действовала, что можно было сказать, что данная директива для обработки не предусмотрена. Вот считайте, что не существует в директивах CP866, кои-8 и прочей экзотики. Выбор из двух: {$codepage utf8} и {$codepage UTF8} и {$codepage CP1251} (регистр не забываем, во всяком случае во всех описаниях наименование кодовой страницы строго в верхнем регистре).

т.е:
- Делается текст в UTF-8 без BOMов
- опциями компиляции выставляется codepage для RTL в UTF-8 (Лазарус для сових проектов это делает, см. если что там, какой именно ключ)
- в тексте директива {$mode objfpc} {$codepage UTF-8} {H+}
- вместо string - UnicodeString, и только в этом случае можно надеяться на посимвольную обработку строк в виде массива... до тех пор, пока в исходные данные не попадет нечто, кодируемое суррогатными парами. Условно к русским буквам это нечто не относится.

подобного рода программы правильно ведут себя в кроссплатфоменном варианте и благополучно справляются с выводом и вводом кириллицы в консолях win.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Free Paskal, Geany, Кирилица

Сообщение vitaly_l » 12.10.2017 16:13:59

SSerge писал(а):Теперь по-русски, пжалста, эту вашу аллюзию мыслей...

В какой кодировке записана страница, ту кодировку и нужно указывать в CODEPAGE. Всё остальное - вода.
С другой стороны, какую кодировку указали в CODEPAGE, в той кодировке и нужно сохранить проект. Всё остальное опять-таки - вода.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

След.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Рейтинг@Mail.ru