Форум » GUI » Word unicode-символ » Ответить

Word unicode-символ

Новичок: Вопрос, какая функция (готовая) выводит Unicode-символ на MS Word или надо ручками рисовать? как представить на Hb двухбайтный символ или более...

Ответов - 31, стр: 1 2 All

Pasha: создаем исходник в кодировке utf8: proc main local oWord, oText REQUEST HB_CODEPAGE_UTF8, HB_CODEPAGE_UTF8EX hb_cdpSelect( "UTF8EX" ) oWord := win_oleCreateObject( "Word.Application" ) oWord:Documents:Add() oText := oWord:Selection() oText:InsertAfter("АБВГДЕЁЖЗИЙКЛМНҢОӨПРСТУҮФХЦЧШЩЪЫЬЭЮЯ") oWord:Visible := .t. retu собираем, запускаем, видим в word то, что надо, весь алфавит

SergKis: SergKis пишет aSim := {{utf8(1251), utf8(нац. символ), ... } и по идее cValue := hb_StrToUtf8(cValue) AEval(aSim, {|as|, cValue := StrTran(cValue, as[1], as[2]) }) hb_cdpSelect( "RU1251" ) aSim := {{hb_strtoutf8(chr(161)), } /* H */,hb_strtoutf8(chr(162)), } /* h */, ...} hb_cdpSelect( "UTF8EX" ) // если prg файл не utf8 можно прочитать с файла или ресурсов в utf8 все буквы перекодировки aSim[ 1 ][2] := "Ң" aSim[ 2 ][2] := "ң" ... hb_cdpSelect( "RU1251" ) cVal := hb_strtoutf8(cVal) AEval(aSim, {|as| cVal := StrTran(as[1], as[2]) }) отправив в word cVal, тоже должно быть ok

Новичок: нашел другой вариант вставить символ Юникод, более лучший oWord := win_oleCreateObject( "Word.Application" ) oWord:Documents:Add() oActive := oWord:ActiveDocument() oMarks := oActive:BookMarks oText := oWord:Selection() oText:TypeText("04af") // код юникода - 04af oText:ToggleCharacterCode() // перевод кода "04af" на юникод в связке с TypeText


Новичок: Более лучший вариант вставки Юникод: oWord := win_oleCreateObject( "Word.Application" ) oWord:Documents:Add() oActive := oWord:ActiveDocument() oMarks := oActive:BookMarks oText := oWord:Selection() oText:TypeText("04af") // указать код символа Юникода oText:ToggleCharacterCode() // Перевод на символ Юникод согласно TypeText("04af") // вместо oText:Content:InsertAfter:Text:=oText:Range:InsertSymbol(1199,"Times New Roman",.T.)

Новичок: Класс, попробовал вариант Pasha (попроще), сработало только еще пришлось данный prg-файл перекодировать на UTF8 (открыл через Visual Studio Code, можно к примеру и на Notepad++) Вариант SergKis - более подходит - если в этом духе перевести чтобы Юникод на контролах светилась Получилось потому что подключили UTF8EX REQUEST HB_CODEPAGE_UTF8,HB_CODEPAGE_UTF8EX hb_cdpSelect( "UTF8EX" ) без UTF8EX не получалось... Вопрос 1) и почему при простых REQUEST HB_CODEPAGE_UTF8 hb_cdpSelect( "UTF8" ) не срабатывает ? 2) Обязательно подключать обе REQUEST HB_CODEPAGE_UTF8 REQUEST HB_CODEPAGE_UTF8EX ?

Новичок: так как, уже prg-файл в кодировке UTF8, то внутренние сообщения к примеру MsgInfo(cInfo), ... перекинул через cInfo:='текст сообщения' cInfo:=hb_translate(cInfo,'UTF8','RU1251') MsgInfo(cInfo) а то вываливались кракозябры (контролы не поддерживают UTF8) *на всякий случай напомнил кому еще понадобится

SergKis: Новичок пишет Вариант SergKis - более подходит - если в этом духе перевести чтобы Юникод на контролах светилась Этот вариант для того, что бы ничего не менять в программе (базы 866, cdp 1251). Надо сделать файл utf8 (без bom) в две строки из 6 символов 1 - ru1251 кодировка 2 - нац. кодировка этот файл поместить в ресурсы и при старте, создавать массив соответствия букв aSim (как выше) из него. Для word, excel делать перекодировку символов, т.е. requstы не нужны

Andrey: Новичок пишет: открыл через Visual Studio Code Можно настроить работу с Харбором и МиниГуи на нём полностью. Я уже пробовал. Смотри - http://clipper.borda.ru/?1-3-0-00000621-000-0-0-1558698012

Pasha: SergKis пишет: Этот вариант для того, что бы ничего не менять в программе (базы 866, cdp 1251). Надо сделать файл utf8 (без bom) в две строки из 6 символов Пока в харборе нет киргизской кодировки, функция hb_strtoutf8 не будет работать на трех дополнительных буквах. Их же нет в ru1251, и правила перекодировки нет.

SergKis: Pasha пишет Пока в харборе нет киргизской кодировки, функция hb_strtoutf8 не будет работать на трех дополнительных буквах. Их же нет в ru1251, и правила перекодировки нет. В программе мы ничего не перекодируем. В файле utf8 в первой строке (можем получить программно hb_strtoutf8(chr(161)), } /* H */,hb_strtoutf8(chr(162)), } /* h */, ...) во вторую строку, проще, взять сайт с киргизским языком и перенести редактором (или программно как выше) Это делаем один раз и при сборке помещаем этот файл (без бом проще) в ресурсы При старте читаем из ресурса в строку (нет перекодировок), можно и из внешнего файла hb_memoread() Создаем aTx := hb_aTokens(cFromRes, CRLF) и из 2х строчного массива делаем aSim как было выше, там где надо делаем cVal := hb_StrToUtf8(cVal) // cdp 1251 -> Utf8 AEval(aSim, {|as| cVal := StrTran(cVal, as[1], as[2]) }) нигде нет перекодировок, символы взяты как есть

SergKis: PS главное использовать при формировании aSim hb_Utf8Substr() для выделения символов из строк, а не Substr()



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