Поддержка русского языка

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

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

Re: Поодержка русского языка

Сообщение Mikhail » 09.11.2015 13:17:10

У меня русский просто работает, без всяких ухищрений. :)
У меня XP, если что. Наберите в консоли chcp.
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Поодержка русского языка

Сообщение gvido » 09.11.2015 14:01:52

Mikhail писал(а):Наберите в консоли chcp
это как раз ухищрение. После глобальной смены кодировки консоли chcp 1251 все консольное ПО ориентированное на 866 с кириллическим выводом будет с "кракозяблами" - это не правильный подход. хуже только изврат которым я пользовался очень давно - во внешнем редакторе в кодировке 866 писал русский текст, копировал и вставлял копипастом в исходник.
Результат - в выводе скомпиленного приложения все красиво, но в исходнике кракозяблы.

О, нашел в вики для FPC

Примечание для пользователей Windows

Традиционно при написании консольных программ в Windows используется кодировка cp866. Если не принять специальных мер, то при написании консольной программы в IDE в консоли вместо русских букв будут выводиться кракозябры. Чтобы получился нормальный русский текст, в окне кода программы нужно нажать правую кнопку мыши и выбрать в контекстном меню "Параметры файла -> Кодировка -> CP866".
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Поодержка русского языка

Сообщение SSerge » 09.11.2015 14:09:58

gvido писал(а):это как раз ухищрение


команда без параметров показывает текущую кодовую страницу. Это пока не ухищрение.
У автора топика, возможно, настроено всё так, что chcp консоли имеет кодировку отнюдь не cp866, поэтому и проблемы. А так это или нет - мы знать не можем. Если запустит код, предложенный мною на предыдущей странице (и представит нам результаты исполнения), то можно будет увидеть и кодовую страницу консоли, и вычислить кодировку исходника из кодов русских букв. :D
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Поодержка русского языка

Сообщение Mikhail » 09.11.2015 14:23:29

SSerge писал(а):команда без параметров показывает текущую кодовую страницу.


Да, я просто хотел узнать какая там кодировка в консоли в Win8, может там utf8 или utf16... :roll:

Добавлено спустя 3 минуты:
Еще повторю, у меня в WinXP при работе в FP-ide нет никаких проблем с русским языком в консоли, все работает "из-коробки". В лазарус нужно поменять кодировку на 866 (в контекстном меню редактора), чтобы был русский язык в консоли.
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Поодержка русского языка

Сообщение gvido » 09.11.2015 14:52:03

Windows 10 pro :
Код: Выделить всё
C:\Users\Sergey>chcp
Текущая кодовая страница: 866

windows 7 corp:
Код: Выделить всё
C:\Users\encripter>chcp
Текущая кодовая страница: 866


Думаю, что в windos 8 - 8,1 базовая настройка консоли тоже 866

Привет! в 1251 сохранен в файл t.txt

вывод консоли (866):
Код: Выделить всё
C:\Users\Sergey>type d:\t.txt
╧ЁштхЄ!


Есть подозрение, что таки да, у ТС хрень какая-то в консоли.
Нужен вывод консоли ТС на команду CHCP
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Поодержка русского языка

Сообщение Лекс Айрин » 09.11.2015 15:16:57

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

Re: Поодержка русского языка

Сообщение gvido » 09.11.2015 15:36:23

Лекс Айрин писал(а):gvido онлайн перекодировщик говорит, что Вы пытаетесь писать в win1251, а кодировка консоли СР866


Конечно!!! Я привел этот вывод как пример и указал, что текст сохранен в кодировке 1251 и каков будет вывод в консоли с кодировкой 866.
Коллеги правы, нужно посмотреть на какую кодировку настроена консоль у ТС и проверить кодировку проекта-исходника. То что вывод консоли у ТС в таком жутком виде, говорит о не соответствии кодировок.
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Поодержка русского языка

Сообщение Лекс Айрин » 09.11.2015 17:00:01

gvido, а тут и смотреть нечего. Так как TC практически win only, то ему и поставили, судя по всему, по умолчанию кодировку 1251. А значит, если хотите видеть нормальный выхлоп в консоли, то и используйте соответствующий перекодировщик. Я не помню, есть ли перекодировщик, но думаю, найдется. Причем, как бы вы не старались, но под виндой подобные косяки нормальное явление. Ибо использование двух разных кодировок (а иногда и трех!) это исторически сложившееся явление. И перекодировку надо делать не в консоли (если это не программа написанная для себя), а в самой программе. Впрочем, у клиента тоже может быть неправильно настроена консоль. И лично вы ничего с этим не сделаете. Если только не используете определение кодировки консоли.

ЗЫ: у меня, кстати, чисто под консольным ide тоже никаких проблем нет. Ну а проблемы из-под лазаря это норма. Избежать этого можно, если правильно помню специальной директивой можно прямо в тексте указать кодировку. для компилятора... хотя могу и ошибаться.

Добавлено спустя 14 минут 46 секунд:
Ну да если подсказать компилятору кодировку директивой
Код: Выделить всё
{$CODEPAGE CP866}

То и Лазарь нормально компилирует.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Поодержка русского языка

Сообщение gvido » 09.11.2015 17:15:34

Лекс Айрин писал(а):gvido, а тут и смотреть нечего. Так как TC практически win only, то ему и поставили, судя по всему, по умолчанию кодировку 1251. А значит, если хотите видеть нормальный выхлоп в консоли, то и используйте соответствующий перекодировщик. Я не помню, есть ли перекодировщик, но думаю, найдется. Причем, как бы вы не старались, но под виндой подобные косяки нормальное явление. Ибо использование двух разных кодировок (а иногда и трех!) это исторически сложившееся явление. И перекодировку надо делать не в консоли (если это не программа написанная для себя), а в самой программе. Впрочем, у клиента тоже может быть неправильно настроена консоль. И лично вы ничего с этим не сделаете. Если только не используете определение кодировки консоли.

ЗЫ: у меня, кстати, чисто под консольным ide тоже никаких проблем нет. Ну а проблемы из-под лазаря это норма. Избежать этого можно, если правильно помню специальной директивой можно прямо в тексте указать кодировку. для компилятора... хотя могу и ошибаться.


У ТС в консоле точно не 1251, если полагать что исходник в 866:
Код: Выделить всё
C:\Users\Sergey>type d:\t.txt
ЏаЁўҐв! ќ­Ё Ў ¤Ё вгв?

Это вывод текста "Привет! Эни бади тут?", сохраненного в 866 в консоле с 1251.

Я ж не спорю. Если опираться на возможные косяки в настройке системы, то тут всех камней не предугадаешь. Я всегда опирался, при написании консольных утилит под винду, на стандартные настройки, то есть консоль в винде (в русской) - 866. Исходник в делфи был в 1251, в турбо паскале в 866. С лазарусом все, конечно, несколько усложнилось.
gvido
постоялец
 
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Re: Поодержка русского языка

Сообщение Лекс Айрин » 09.11.2015 17:24:41

gvido, так укажи в тексте его родную кодировку директивой $CODEPAGE а дальше пусть компилятор мучается.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Поодержка русского языка

Сообщение vitaly_l » 09.11.2015 20:22:46

AnnaNsk писал(а):Да и трудно будет детям объяснить как сделать, чтобы русский пошёл (особенно на первых уроках. Тем кто еще не знает про программирования.).

А Вам обязательно эта синяя IDE нужна??? Может Вам лучше Лазарус установить, на нём как-то более удобно учится чем на этой синей штуке... На таких синих штуках, только очень опытные программисты код пишут, т.к. им уже нечего терять... Попробуйте установить обыкновенный Лазарус. И тогда у Вас точно будет счастье!
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Поодержка русского языка

Сообщение Лекс Айрин » 09.11.2015 20:48:14

vitaly_l, это не решит вопроса. Как раз при написании в лазарусе консольных программ чаще будет появляться неправильное кодирование.

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

Re: Поодержка русского языка

Сообщение Дож » 09.11.2015 20:55:49

Проблема с fp IDE ещё и в том, что она не поддерживается разработчиками и заведомо некорректно работает. Lazarus кажется более удачным выбором, если такой выбор имеется.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Поодержка русского языка

Сообщение WAYFARER » 09.11.2015 21:35:46

Дож писал(а):Проблема с fp IDE ещё и в том, что она не поддерживается разработчиками и заведомо некорректно работает. Lazarus кажется более удачным выбором, если такой выбор имеется.

Можно использовать Geany как IDE. Работает с любыми кодировками.

Добавлено спустя 11 минут 9 секунд:
gvido писал(а):это как раз ухищрение. После глобальной смены кодировки консоли chcp 1251 все консольное ПО ориентированное на 866 с кириллическим выводом будет с "кракозяблами" - это не правильный подход. хуже только изврат которым я пользовался очень давно - во внешнем редакторе в кодировке 866 писал русский текст, копировал и вставлял копипастом в исходник.

chcp меняет кодировку только для текущего сеанса. Т.е. это никак не повлияет на остальное ПО.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 517
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Поодержка русского языка

Сообщение Pavia » 09.11.2015 22:00:38

WAYFARER писал(а):chcp меняет кодировку только для текущего сеанса. Т.е. это никак не повлияет на остальное ПО.
Если знать где прописать, то влияет. :twisted:
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Пред.След.

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

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

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

Рейтинг@Mail.ru