Форум » [x]Harbour » GET на UTF-8 » Ответить

GET на UTF-8

dimao: Помогите разобраться, как сделать ввод русского текста через GET в LINUX консоли при локали UTF-8 ? и как его потом преобразовать в 866 кодировку? вывод строк не представляет проблемы, но ввод!!! это что-то ------------------------------------------------------------------------- http://dimao.blogspot.com/ - про Харбор и про жисть.

Ответов - 10

Петр: Кроме уже освоенной вами hb_cdpSelect, Harbour предлагает такие функции hb_setDispCP(), hb_setKeyCP(), hb_setTermCP(). Так, что есть выбор - перевести локаль в KOIR-8r и при помощи указанных функций добиться желаемого результата или разблокировать экспериментальную поддержку UTF8 в исходниках, перекомпилировать Harbour и дальше опять с помощью setDispCP(), hb_setKeyCP() получить желаемое. Все подробности ищите в ChangeLog P.S. Я не линуксоид, больше чем советом, не совсем иногда уместным , помочь не смогу.

dimao: Вот спасибо! попробую. Но, вообще-то, я уже собрался поставить винду на виртуалке. Всеравно мои изыскания направлены на помощь знакомому, который сидит на винде. Просто, хотелось замутить что-то кроссплатформенное. Чтобы одинаково работало при сборке на винде и линухе.

Петр: dimao пишет: Просто, хотелось замутить что-то кроссплатформенное. Чтобы одинаково работало при сборке на винде и линухе. Harbour изначально кросс-платформенный проект. Так что - все в ваших руках. Надеюсь почитать о результатах в вашем блоге.


dimao: в блоге выложил новый примерчик.

dimao: теперь интересует вопрос индексирования БД. как , при работе , например, в 1251 обеспечить правильный порядок индексирования? ну и вопрос о том, если в БД иапользубтся поля в разной кодировке, как обеспечить правильное индексирование по полям. можно при создании индекса задать кодировку текстовых строк? или эта установка глобальна на всю программу?

Pasha: dimao пишет: теперь интересует вопрос индексирования БД. как , при работе , например, в 1251 обеспечить правильный порядок индексирования? ну и вопрос о том, если в БД иапользубтся поля в разной кодировке, как обеспечить правильное индексирование по полям. можно при создании индекса задать кодировку текстовых строк? или эта установка глобальна на всю программу? Харбор поддерживает и кодовые страницы при индексации, и автоматическую трансляцию между кодовыми страницами. Эти средства присущи ему от рождения вот эти операторы: прилинковать нужные кодовые страницы: REQUEST HB_CODEPAGE_RU866 REQUEST HB_CODEPAGE_RU1251 REQUEST HB_CODEPAGE_RUKOI8 указать кодовую страницу программы: hb_SetCodepage( "RU866" ) или hb_SetCodepage( "RUKOI8" ) в этом году функцию hb_SetCodepage переименовали в HB_CDPSELECT() и указать кодовую страницу при открытии таблицы: use test codepage "RU1251" new при этом индексация таблицы будет выполняться в cp1251, а при чтении/записи данных из нее будет делаться автоматическая трансляция в/из cp866/koi8-r.

dimao: принцип более-менее ясен. есть несколько слоев: слой хранения БД, слой ввода-вывода данных в-из БД, слой ввода-вывода на экран. для каждого свой набор функций перекодировки. хранение данных в ДБ: задание кодовой таблици при открытии ввод-вывод в -из ДБ:hb_SetCodepage( ХХХ ) ввод-вывод на экран:hb_setTermCP(ХХХ) я правильно понял принцип? если везде одинаково - то задать один раз на всю программу hb_SetCodepage( "RU1251" ) hb_setTermCP("RU1251") и забыть. Независимо от ОС, на которой собрано, всегда будет одинаково работать.

Pasha: hb_SetCodepage( "RU1251" ) задает кодировку строковых переменных в программе. Это существенно, к примеру, для функций upper/lower hb_setTermCP("RU1251") задает кодировку терминала, и терминал gtcrs выполняет трансляцию при вводе/выводе Эти установки достаточно указать при старте программы. Если при открытии таблиц БД кодировка не указана, то используется установленная функцией hb_SetCodepage. Если кодировка таблицы отличается, ее надо указать в команде USE Эти установки платформеннонезависимые. Но надо еще учитывать, какой терминал харбора используется, и, возможно, устанавливать дополнительные настройки. Это, к примеру, касается терминала gtwvt для Windows

dimao: кстати о терминалах. читал, что их много. Но какой лучше и чем? где найти сравнение и рекоммендации по выбору?

yury: Здесь немного



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