Форум » Для флейма » Linux (Ubunta 12.xx) + Wine + терминалка GTWVT(866) » Ответить

Linux (Ubunta 12.xx) + Wine + терминалка GTWVT(866)

Andrey: Всем привет ! Столкнулся с большой проблемой, помогите. Под Ubunta 12.хх + Wine запускаю свою прогу (терминалка xHarbour+BCC5.5.1 GTWVT с кодировкой 866 - базы и интерфейс) Так вместо букв - кракозябы.... Что нужно настроить и как, чтобы в Ubunte появилась 866 кодировка ?

Ответов - 36, стр: 1 2 All

vvv: Может тут дело не в кодировке, может шрифты виндовые подтянуть надо?

petr707: Применить шрифт Terminal

Andrey: Нет, там нужно подключить кодовую страницу cp866 ! Я по форумам читал, находил, но решения так и не нашел. Я сюда написал, потому что у нас кто-то собирал свои программы на Харборе для Linux ! Народ, кто работает с Linux - отзовитесь ? Попробуйте собрать терминалку с 866 страницей. Или запустить мой готовый тестовый пример http://files.mail.ru/ZXZVB9


Andrey: На форуме по Ubuntu советуют программу собрать на чистом GTWIN. Опять возврат к прошлому... Сижу на xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6406) Собрал тестовый пример на RU1251 и облом, в Windows вместо русской кодировки - кракозябы тоже... Подскажите как правильно собрать GTWIN-терминал с RU1251 для хХарбора ? И как иконку + титул окна сделать ? Проект тут... http://files.mail.ru/6ASL5M Заранее спасибо за ответ !

Pasha: Зачем делать терминалку под wine, лучше сразу собрать программу для linux Использовать терминал gtcrs, а для трансляции 866-й кодовой страницы в koi8 выдать команду: hb_SetTermCP( 'RUKOI8', 'RU866', .t. )

Pasha: Кстати, hb_SetTermCP вроде бы (я не проверял) поддерживается терминалами gtwin/gtwvt, так что таким же образом можно настроить 866-ю страницу средствами харбора.

Andrey: Pasha пишет: Зачем делать терминалку под wine, лучше сразу собрать программу для linux Согласен, лучше бы сразу для Linux. Но вся печать под FastReport + дополнительный вызов Delhi-программ.... Сразу за короткий срок не переделать. А нужно запустить и работать...

Andrey: Pasha пишет: Кстати, hb_SetTermCP вроде бы (я не проверял) поддерживается терминалами gtwin/gtwvt Не работает... В файле PRG пишу сообщения в кодировке 1251, собираю проект - сообщения на русском в кракозябах... Что не так делаю ? Подскажите как правильно собрать GTWIN-терминал с RU1251 для хХарбора 1.2 или 1.0 ? И как иконку + титул окна сделать ? Проект тут... http://files.mail.ru/0AH5A7

Andrey: Pasha пишет: Кстати, hb_SetTermCP вроде бы (я не проверял) поддерживается терминалами gtwin/gtwvt, так что таким же образом можно настроить 866-ю страницу средствами харбора. Опять мучал Ubuntu ! терминал GTWIN для 866 странице - нормально работает, т.е. кодировка такая же как в Виндах. Добился. Пробовал все варианты для GTWVT-866, не работает зараза... hb_SetTermCP( 'RUKOI8', 'RU866', .T. ) hb_SetTermCP( 'RUWIN', 'RU866', .T. ) hb_SetTermCP( 'RU866', 'RU866', .t. ) Ни один вариант не подходит. Pasha можешь подсказать в какую сторону копать ? Примеры тут http://files.mail.ru/NED09Y Исходник здесь http://files.mail.ru/JIWUWF Картинка программы под Windows: Картинка программы под Ubuntu Wine: Тоесть под WINE русский шрифт не идет с CHR(128) !!! Может я что-то неправильно делаю ? Или это в gtwvt-терминале такая фигня ?

Pasha: Андрей, я вижу, что безуспешно задавал вопрос в Harbour Users list Обьясняю теоретическую часть: Кодировка применяется: 1) кодировка БД 2) для самой программы, т.е. имеется в виду та кодировка, в которой даются строковые литералы 3) кодировка терминала Вызовом функции hb_SetCodepage/hb_CdpSelect надо установить кодировку 2) Если кодировка 1) отличается от кодировки 2), то кодировку 1) надо укезывать при открытии таблиц в команде USE Если кодировка 3) отличается от кодировки 2), то кодировку 3) надо указать вызовом hb_SetTermCP( cCdp3 ) На все используемые кодировки должен быть указан оператор Request. Насколько я понимаю, у тебя кодировка 1) и 2) - это RU866. Таким образом, осталось определить кодировку терминала.

Andrey: Спасибо БОЛЬШОЕ за ответ ! Теперь лучше понимаю где строковые переменные, а где терминал. Pasha пишет: Таким образом, осталось определить кодировку терминала. А есть функция в хХарборе или Харборе которая возвращает какая кодировка терминала ? Все мозги себе вынес, и на форуме Ubuntu тоже подсказать не могут, потому что это все таки относится к самому Харбору.

Pasha: Только сейчас увидел, что механически перепутал номера кодировок в примере. Поправил А что касается кодировки терминала wvt, то это вопрос не харбора, а вопрос, какая кодировка используется в шрифте, который использует терминал wvt По картинке видно, что используется 1251 Таким образом, надо задать: REQUEST HB_CODEPAGE_RU866 REQUEST HB_CODEPAGE_RU1251 hb_SetCodepage( "RU866" ) hb_SetTermCP( "RU1251" )

Andrey: Да забыл написать, что ВСЕ базы использую в RU866. Да это по моему и не важно особо. Pasha пишет: hb_SetTermCP( "RU1251" ) По синтаксису эта функция должна иметь 3 параметра (по крайней мере для хХарбора 1.2) и "RU1251" для хХарбора 1.2 заменен на 'RUWIN'. Тогда так нужно писать: hb_SetTermCP( 'RUWIN', 'RU866', .T. ) ?

Pasha: Да, в xHarbour сейчас эта кодовая страница называется RUWIN. Я уже запутался, сколько раз ее переименовывали туда-обратно. А для hb_SetTermCP 2-й и 3-й параметры необязательны.

Andrey: Спасибо БОЛЬШОЕ ! Буду пробовать сегодня.

Andrey: Заказчик из Сибири прислал скриншот, у него кодировка экрана нормальная, т.е. правильная. У себя пробовал, фигня получается, без изменений. Взял снес Ubuntu, переставил заново. Думал дело в моих добавлениях шрифтов для терминала. Нет то же самое. Т.е. шрифт идет со сдвигом ! Что можно сделать ? Написал письмо Pritpal Bedi, он ответил, что уже не работает с хХарбором и помочь не может. Наверно нужно переходить на Харбор. А как правильно переделать мой пример для Харбора ? http://files.mail.ru/7561U2

Pasha: Андрей, попробуй выдать команды изменения charset для wvt: hb_gtinfo( HB_GTI_CODEPAGE, 255) // oem или hb_gtinfo( HB_GTI_CODEPAGE, 204) // rus 1251 по умолчанию должно быть значение oem, попробуй переключить на 204, в комбинации с settermcp

Andrey: Сделал: HB_LANGSELECT("RU866") hb_SetCodepage( "RU866" ) hb_gtinfo( HB_GTI_CODEPAGE, 204) // rus 1251 hb_SetTermCP( 'RUWIN' ) Результат все тот же: И под Виндой тоже появились кракозябы: Что дальше сделать можно ?

petr707: по картинке(гарнитуре) видно - вроде под Ubuntu Wine - фонт не Terminal ( видимо Courier ? ) все ли установки выполнились? можно попробовать спросить ? " hb_langName() = "+hb_langname() ? " hb_langSelect() = "+hb_langselect() ? " CodePage = "+STR( HB_GtInfo(HB_GTI_CODEPAGE) ,7) ? " FONTNAME = {"+hb_gtinfo( HB_GTI_FONTNAME ) +"}" ? " FONTWIDTH = "+STR( hb_gtinfo( HB_GTI_FONTWIDTH ) ,7) ? " FONTSIZE = "+STR( hb_gtinfo( HB_GTI_FONTSIZE ) ,7)

Andrey: petr707 пишет: можно попробовать спросить



полная версия страницы