Форум » GUI » UTF8, RU1251, CP866 » Ответить

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

SergKis: Посмотрите тему hbedit (исходники), hb_Translate() можно обходить таким способом (кусочек из fedit.prg hbedit) [pre2] 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" [/pre2]

Pasha: Можно сделать вызов пользовательской функции следующим образом: Вместо 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")

Новичок: нашел проблему: оказывается в процессе работы, в переменную строки - цепляю вперемешку с разных кодировок, в итоге например часть текста UTF8 корректно переводит в RU1251, а часть текста которая итак была на RU1251 переводит в кракозябры (что и смутило ) - и получается нормально-кракозябный текст *в дальнейшем буду отслеживать, чтобы переменная строки была одной кодировки, пока всё не переведу на UTF8




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