Автор | Сообщение |
|
| |
Пост N: 10
Зарегистрирован: 14.01.09
|
|
Отправлено: 06.11.10 12:10. Заголовок: GET на UTF-8
Помогите разобраться, как сделать ввод русского текста через GET в LINUX консоли при локали UTF-8 ? и как его потом преобразовать в 866 кодировку? вывод строк не представляет проблемы, но ввод!!! это что-то ------------------------------------------------------------------------- http://dimao.blogspot.com/<\/u><\/a> - про Харбор и про жисть.
|
|
|
Ответов - 10
[только новые]
|
|
|
| постоянный участник
|
Пост N: 992
Зарегистрирован: 09.10.06
|
|
Отправлено: 07.11.10 13:37. Заголовок: Кроме уже освоенной ..
Кроме уже освоенной вами hb_cdpSelect, Harbour предлагает такие функции hb_setDispCP(), hb_setKeyCP(), hb_setTermCP(). Так, что есть выбор - перевести локаль в KOIR-8r и при помощи указанных функций добиться желаемого результата или разблокировать экспериментальную поддержку UTF8 в исходниках, перекомпилировать Harbour и дальше опять с помощью setDispCP(), hb_setKeyCP() получить желаемое. Все подробности ищите в ChangeLog P.S. Я не линуксоид, больше чем советом, не совсем иногда уместным , помочь не смогу.
|
|
|
|
| |
Пост N: 12
Зарегистрирован: 14.01.09
|
|
Отправлено: 07.11.10 14:07. Заголовок: Вот спасибо! попробу..
Вот спасибо! попробую. Но, вообще-то, я уже собрался поставить винду на виртуалке. Всеравно мои изыскания направлены на помощь знакомому, который сидит на винде. Просто, хотелось замутить что-то кроссплатформенное. Чтобы одинаково работало при сборке на винде и линухе.
|
|
|
|
| постоянный участник
|
Пост N: 993
Зарегистрирован: 09.10.06
|
|
Отправлено: 07.11.10 22:43. Заголовок: dimao пишет: Просто..
dimao пишет: цитата: | Просто, хотелось замутить что-то кроссплатформенное. Чтобы одинаково работало при сборке на винде и линухе. |
| Harbour изначально кросс-платформенный проект. Так что - все в ваших руках. Надеюсь почитать о результатах в вашем блоге.
|
|
|
|
| |
Пост N: 13
Зарегистрирован: 14.01.09
|
|
Отправлено: 09.11.10 16:39. Заголовок: в блоге выложил новы..
в блоге выложил новый примерчик.
|
|
|
|
| |
Пост N: 14
Зарегистрирован: 14.01.09
|
|
Отправлено: 10.11.10 13:17. Заголовок: теперь интересует во..
теперь интересует вопрос индексирования БД. как , при работе , например, в 1251 обеспечить правильный порядок индексирования? ну и вопрос о том, если в БД иапользубтся поля в разной кодировке, как обеспечить правильное индексирование по полям. можно при создании индекса задать кодировку текстовых строк? или эта установка глобальна на всю программу?
|
|
|
|
| Администратор
|
Пост N: 1688
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.11.10 16:03. Заголовок: dimao пишет: теперь..
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.
|
|
|
|
| |
Пост N: 15
Зарегистрирован: 14.01.09
|
|
Отправлено: 11.11.10 09:59. Заголовок: принцип более-менее ..
принцип более-менее ясен. есть несколько слоев: слой хранения БД, слой ввода-вывода данных в-из БД, слой ввода-вывода на экран. для каждого свой набор функций перекодировки. хранение данных в ДБ: задание кодовой таблици при открытии ввод-вывод в -из ДБ:hb_SetCodepage( ХХХ ) ввод-вывод на экран:hb_setTermCP(ХХХ) я правильно понял принцип? если везде одинаково - то задать один раз на всю программу hb_SetCodepage( "RU1251" ) hb_setTermCP("RU1251") и забыть. Независимо от ОС, на которой собрано, всегда будет одинаково работать.
|
|
|
|
| Администратор
|
Пост N: 1689
Зарегистрирован: 23.05.05
|
|
Отправлено: 11.11.10 11:01. Заголовок: hb_SetCodepage( "..
hb_SetCodepage( "RU1251" ) задает кодировку строковых переменных в программе. Это существенно, к примеру, для функций upper/lower hb_setTermCP("RU1251") задает кодировку терминала, и терминал gtcrs выполняет трансляцию при вводе/выводе Эти установки достаточно указать при старте программы. Если при открытии таблиц БД кодировка не указана, то используется установленная функцией hb_SetCodepage. Если кодировка таблицы отличается, ее надо указать в команде USE Эти установки платформеннонезависимые. Но надо еще учитывать, какой терминал харбора используется, и, возможно, устанавливать дополнительные настройки. Это, к примеру, касается терминала gtwvt для Windows
|
|
|
|
| |
Пост N: 17
Зарегистрирован: 14.01.09
|
|
Отправлено: 11.11.10 13:52. Заголовок: кстати о терминалах...
кстати о терминалах. читал, что их много. Но какой лучше и чем? где найти сравнение и рекоммендации по выбору?
|
|
|
|
| |
Пост N: 7
Зарегистрирован: 02.08.10
|
|
Отправлено: 11.11.10 14:44. Заголовок: Здесь немного ..
|
|
|
|