Автор | Сообщение |
|
| |
Пост N: 77
Зарегистрирован: 22.04.15
|
|
Отправлено: 18.09.19 15:56. Заголовок: UTF8, RU1251, CP866
У меня возник вопрос: - Основная часть текста программы набрана и подключена на кодовой странице RU1251 с множеством пользовательских функций - База данных на CP866 - Часть текста программы набрана и подключена на кодовой странице UTF8 для работы с MS Word как я понимаю, если с БД вызываются данные, то они автоматически переводятся на текущую кодовую страницу, типа hb_Translate(cDATA,"CP866","RU1251") а если с части программы где UTF8, вызываю пользовательскую функцию (RU1251) которая работает с БД CP866, то как здесь реализован механизм ? Пользовательская функция произведет hb_Translate(cDATA,"CP866","RU1251"), и далее hb_Translate(cDATA,"RU1251","UTF8"), то есть на выходе полученная переменная с текстовым данным будет в формате кодовой страницы UTF8 или все-таки примет кодовую страницу где находилась пользовательская функция (RU1251) ? *конечно, в дальнейшем всю прогу переведу на UTF8, но в данный момент времени требуется только эту часть *да и этот момент интересен
|
|
|
Ответов - 3
[только новые]
|
|
|
| постоянный участник
|
Пост N: 2891
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.09.19 16:23. Заголовок: Посмотрите тему hbed..
Посмотрите тему hbedit (исходники), hb_Translate() можно обходить таким способом (кусочек из fedit.prg hbedit) hb_cdpSelect( "RU866" ) @ 09, 10, 15, 72 BOX "┌─┐│┘─└│ " @ 13, 20 SAY "├" @ 13, 60 SAY "┤" @ 13, 11 TO 13, 71 hb_cdpSelect( oEdit:cp ) @ 10, 12 SAY "Open file" @ 12, 12 SAY "[ ] ReadOnly" @ 12, 27 SAY "[ ] In a current window"
|
|
|
|
| Администратор
|
Пост N: 3884
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.09.19 16:50. Заголовок: Можно сделать вызов ..
Можно сделать вызов пользовательской функции следующим образом: Вместо cRet := userFunc(..) сделать cRet := UTFUserFunc({|| userFunc(..)}) и Function UTFuserFunc(Block) local cRet hb_cdpSelect( "RU1251" ) cRet := Eval(Block) hb_cdpSelect( "UTF8" ) Return hb_Translate(cRet,"RU1251","UTF8")
|
|
|
|
| |
Пост N: 78
Зарегистрирован: 22.04.15
|
|
Отправлено: 18.09.19 17:44. Заголовок: нашел проблему: оказ..
нашел проблему: оказывается в процессе работы, в переменную строки - цепляю вперемешку с разных кодировок, в итоге например часть текста UTF8 корректно переводит в RU1251, а часть текста которая итак была на RU1251 переводит в кракозябры (что и смутило ) - и получается нормально-кракозябный текст *в дальнейшем буду отслеживать, чтобы переменная строки была одной кодировки, пока всё не переведу на UTF8
|
|
|
|