Автор | Сообщение |
|
| постоянный участник
|
Пост N: 63
Зарегистрирован: 27.07.08
|
|
Отправлено: 15.04.10 17:16. Заголовок: Изображение кодировки ДОС под Windows
Как известно, ДОС и Винда используют разные кодировки. Поэтому при переносе базы данных из ДОС в ВИНДУ возникли косяки с диакритическими знаками. Функция HB_TRANSLATE здесь не подходит, поскольку хотелось бы, чтобы эта база могла бы использоваться и ис-под ДОСа. Как задать правильное отображение кодировки 850 элементами управления Винды (TEXTBOX), чтобы и при вводе эти диакритические знаки, введённые из-под Винды, сохранялись в ДОСе.
|
|
|
Ответов - 8
[только новые]
|
|
|
| moderator
|
Пост N: 41
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.04.10 17:53. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Как задать правильное отображение кодировки |
| Харбор располагает для этого двумя полезными функциями. Ниже их описание Скрытый текст /* $DOC$ * $TEMPLATE$ * Function * $NAME$ * HB_ANSITOOEM() * $CATEGORY$ * API * $SUBCATEGORY$ * Strings * $ONELINER$ * Convert a windows Character to a Dos based character * $SYNTAX$ * HB_ANSITOOEM( <cString> ) --> cDosString * $ARGUMENTS$ * <cString> Windows ansi string to convert to DOS oem String * $RETURNS$ * <cDosString> Dos based string * $DESCRIPTION$ * This function converts each character in <cString> to the * corresponding character in the MS-DOS (OEM) character set. The * character expression <cString> should contain characters from the * ANSI character set. If a character in <cString> doesn't have a * MS-DOS equivalent, the character is converted to a similar MS-DOS * character. * $EXAMPLES$ * ? HB_OEMTOANSI( "Harbour" ) * $STATUS$ * R * $COMPLIANCE$ * H * $PLATFORMS$ * Win * $FILES$ * Library is rtl * $SEEALSO$ * HB_OEMTOANSI() * $END$ */ /* $DOC$ * $TEMPLATE$ * Function * $NAME$ * HB_OEMTOANSI() * $CATEGORY$ * API * $SUBCATEGORY$ * Strings * $ONELINER$ * Convert a DOS(OEM) Character to a WINDOWS (ANSI) based character * $SYNTAX$ * HB_OEMTOANSI( <cString> ) --> cDosString * $ARGUMENTS$ * <cString> DOS (OEM) string to convert to WINDOWS (ANSI) String * $RETURNS$ * <cDosString> WINDOWS based string * $DESCRIPTION$ * This function converts each character in <cString> to the * corresponding character in the Windows (ANSI) character set. The * character expression <cString> should contain characters from the * OEM character set. If a character in <cString> doesn't have a ANSI * equivalent, the character is remais the same. * $EXAMPLES$ * ? HB_OEMTOANSI( "Harbour" ) * $STATUS$ * R * $COMPLIANCE$ * H * $PLATFORMS$ * Win * $FILES$ * Library is rtl * $SEEALSO$ * HB_ANSITOOEM() * $END$ */
|
|
|
|
|
| moderator
|
Пост N: 271
Зарегистрирован: 06.07.06
|
|
Отправлено: 15.04.10 18:03. Заголовок: "Переносить"..
"Переносить", конвертировать базу данных нет нужды. Просто при открытии ее в вашей программе надо указывать кодовую страницу, в которой она сделана. Если кодовая страница приложения ( установленная hb_SetCodepage ) отличается от указанной для базы, то при чтении/записи данных будет происходит автоконвертация. Так, если мы имеем дело с русскими кодировками и в базах она, как обычно в DOS'е, 866 - то так и открывайте ее: use some_file codepage "RU866". А в начале программы должно стоять, в зависимости от окружения, hb_SetCodepage( "RU866" ) или hb_SetCodepage( "RU1251" ).
|
|
|
|
| постоянный участник
|
Пост N: 64
Зарегистрирован: 27.07.08
|
|
Отправлено: 15.04.10 19:02. Заголовок: Огромное вам спасибо..
|
|
|
|
| |
Пост N: 1578
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.04.10 19:21. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Ставлю виртуальный ящик баварского пива |
| На родину поедешь , захвати пару бутылок (не виртуальных)
|
|
|
|
| постоянный участник
|
Пост N: 872
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.04.10 19:46. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: Если вы работаете с Harbour (без x) помните, что в новых версиях hb_SetCodepage переменован в hb_cdpSelect
|
|
|
|
| постоянный участник
|
Пост N: 1234
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.04.10 21:22. Заголовок: Петр пишет: Если вы..
Петр пишет: цитата: | Если вы работаете с Harbour (без x) помните, что в новых версиях hb_SetCodepage переменован в hb_cdpSelect |
| Ну и нафига нужно было городить такой огород в Харборе ? А под МиниГуи тоже переделывать придется исходники ?
|
|
|
|
| moderator
|
Пост N: 42
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.04.10 21:45. Заголовок: Andrey пишет: под М..
Andrey пишет: цитата: | под МиниГуи тоже переделывать придется исходники ? |
| Нет, не надо. Это уже учтено для совместимости
|
|
|
|
| постоянный участник
|
Пост N: 873
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.04.10 21:47. Заголовок: Andrey пишет: Ну и ..
Andrey пишет: цитата: | Ну и нафига нужно было городить такой огород в Харборе ? |
| HB_CDPSELECT() which does the same as HB_SETCODEPAGE(), but aligns well with function naming rules and namespace. Такие у нас правила наименования и пространства имен. цитата: | А под МиниГуи тоже переделывать придется исходники ? |
| В 100 раз - МиниГуи всего лишь GUI библиотека. Все зависит от того, какой вы компилятор будете использовать. Даже если Харбор, то вам достаточно подключить в начале программы xhb.ch. Тогда код придется править меньше или совсем не править.
|
|
|
|