On-line: Andrey, гостей 2. Всего: 3 [подробнее..]
АвторСообщение



Пост N: 59
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 04:44. Заголовок: Word unicode-символ


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

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 31 , стр: 1 2 All [только новые]


Администратор




Пост N: 3879
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.09.19 08:46. Заголовок: Харбор в любом случа..


Харбор в любом случая передает в word строку в unicode
Чтобы unicode был в самом харборе, и харбор не делал бы перекорировку при присвоении

<Range>:Value := cValue

надо в программе установить кодовую страницу utf8, и строку формировать уже в этой кодировке:

cValue := Chr(n1)+Chr(n2)+...
или
cValue := I2Bin(nn) + ...

где nn - код двухбайтного символа

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 60
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 10:06. Заголовок: ­вставил все-таки: o..


*PRIVAT*

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2833
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.09.19 10:15. Заголовок: Pasha пишет надо в п..


Pasha пишет
 цитата:
надо в программе установить кодовую страницу utf8, и строку формировать уже в этой кодировке


cValue := hb_StrToUtf8( cValue [, cCodePage] )
Разве нельзя воспользоваться вторым параметром ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2834
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.09.19 10:39. Заголовок: PS не меняя страницу..


PS
не меняя страницу на utf8
cValue := hb_StrToUtf8( cValue )
должно быть достаточно для понимания wordом или нет

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 61
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 11:11. Заголовок: Word понимает CP 125..


Word понимает CP 1251 без Hb_StrToUTF8(cValue),

задача была:

Программно воткнуть текст с содержанием UNICODE символа.
К примеру, текст "Это символ Ө с кодом 04Е8"

text:="Это символ "+cSIMVOL+" с кодом 04Е8"

нужно было переменную cSIMVOL как-то представить (типа CharW() ), чтобы при вставке в Word корректно отобразился символ "Ө"
или весь текст )

в том то и дело, "стандартный текст" могу просто набрать, а "специфические символы" нужно указать код, к примеру U+04E8, но как ? реализуется в Hb ?

к примеру даже пробовал hb_strtoutf8(i2bin(1186)) получил на Word Сћ

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2835
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.09.19 12:34. Заголовок: Новичок пишет Програ..


Новичок пишет
 цитата:
Программно воткнуть текст с содержанием UNICODE символа.


hb сам переводит utf8 -> unicode, задача стоит символы ru1251 -> utf8 и потом какие то символы utf8 заменить на др. символы utf8 (нац. кодировки). Правильно понимаю ? Если да, то вроде, достаточно массив с соответствием utf8 значений
aSim := {{utf8(1251), utf8(нац. символ), ... } и по идее
cValue := hb_StrToUtf8(cValue)
AEval(aSim, {|as|, cValue := StrTran(cValue, as[1], as[2]) })
или с ф-ями поиска hb_Utf8At(), hb_Utf8Substr() и т.д.
вопрос, по мне, надо ставить страницу utf8 для работы с вордом или hb\word поймет правильно utf8 строку

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3880
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.09.19 16:14. Заголовок: 04Е8 - это символ из..


04Е8 - это символ из киргизского алфавита. Есть несколько вариантов.

Можно добавить в харбор 8-ми битную кодировку с привязкой ее к unicode. Тогда строковую информацию в БД и текстах программ можно будет хранить в однобайтном формате, а харбор сам будет перекодировать где нужно строки в unicode, в том числе для word.
Но для этого надо определиться, какая именно 8-ми битная кодировка используется. Варианты я давал.
При этом добавление языкового модуля даст такие приятные фичи, как правильная работа функций lower/upper.

Если не использовать 8-ми битную кодировку, то строки надо хранить в utf8 или utf16. Для этого в программе надо установить кодовую страницу по умолчанию UTF8EX или UTF16LE. Харбор опять таки автоматически будет перекодировать при необходимости строки в unicode
Для текстов программ utf8 более-менее подходит, тот же редактор far это делать умеет.
Но при этом не будет языкового модуля.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 62
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 16:21. Заголовок: Имеется текст "Э..


Имеется текст
"Это символ Ө с кодом 04Е8" CP 1251, и только символ "Ө" код U+04E8

приходится вставлять текст последовательно:

- сперва часть слова "Это символ " // без преобразования кодировки (1251)
- далее вставить символ "Ө" // oText:Range:InsertSymbol(1186,"Times New Roman",.T.) (UniCode)
- и в конце часть слова " с кодом 04Е8" // без преобразования кодировки (1251)

в таком порядке корректно отображается текст.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 63
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 16:31. Заголовок: Pasha, я о чем и спр..


Pasha, я о чем и спрашивал в начале (UTF8), 8-битная кодировка с привязкой UTF8.
Можно на примере киргизского, у них только 3 дополнительные буквы к алфавиту (6 символов).

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 64
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 16:37. Заголовок: 6 символов - Ө..


6 символов -
Ө - U+04E8
ө - U+04E9
Ң - U+04A2
ң - U+04A3
Ү - U+04AE
ү - U+04AF
Порядок следования как в кириллице, после символов ...НҢ..ОӨ..УҮ... - для индексации

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3881
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.09.19 16:37. Заголовок: Так какая 8-ми битна..


Так какая 8-ми битная кодировка у вас используется ? Windows Cyrillic Asian ParaType PT-154 ?
В ней символ Ө имеет десятичный код 164, а ө - 181
остальные 2 символа надо посмотреть
Ң - U+04A2 140
ң - U+04A3 156
Ү - U+04AE 135
ү - U+04AF 137
Эта кодировка имеет распространение, или какая-то другая ? Может быть есть утвержденный стандарт ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 65
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 17:00. Заголовок: А черт его знает... ..


А черт его знает...
надо наверно взять основу 1251 (стандартной кириллицы),
для начала после символа "Я" - продолжить эти 6 символов,
в дальнейшем можно определится более точные месторасположения символов
На примере киргизского создать работоспособную вещь,
в дальнейшем можно и подключить не только среднеазиатские языки (на основе кириллицы)
к примеру башкирский имеет те же символы

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2839
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.09.19 17:18. Заголовок: Новичок пишет для на..


Новичок пишет
 цитата:
для начала после символа "Я" - продолжить эти 6 символов,
в дальнейшем можно определится более точные месторасположения символов


погуглил киргизкий алфавит, получил
 
#define HB_CP_UPPER "АБВГДЕЁЖЗИЙКЛМНҢОӨПРСТУҮФХЦЧШЩЪЫЬЭЮЯ"
#define HB_CP_LOWER "абвгдеёжзийклмнңоөпрстуүфхцчшщъыьэюя"

#define HB_CP_UPPER "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
#define HB_CP_LOWER "абвгдежзийклмнопрстуфхцчшщъыьэюя"

нижние строки ru1251

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 66
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 17:19. Заголовок: я имел ввиду располо..


я имел ввиду расположение в кодовой системе 8-бит

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2840
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.09.19 17:25. Заголовок: Новичок пишет я имел..


Новичок пишет
 цитата:
я имел ввиду расположение в кодовой системе 8-бит


символы задаются в hb в utf8 кодировке без BOM, см. src\codepage\l_??.ch
нужны еще названия месяцев и дней недели в utf8, об этом говорили, когда Pasha делал LV 1257 кодировку

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 67
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 17:55. Заголовок: да пока можно постав..


да пока можно поставить русские наименования, проблем сделать отдельные функции не проблема(определения месяцев и дней недели), если будет иметь место возможность использования национальных символов.

*кстати, много используется и двух- и трех- сокращенные наименования месяцев и дней недели (типа, Янв, Фев,... ПНД, ВТР, ... ПН, ВТ, ...)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2841
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.09.19 18:11. Заголовок: Опять погуглил Год ..


Опять погуглил
 
Год у них был представлен оригинальным 12-месячным циклом: жалган куран — февраль, чын куран — март, бугу — апрель, кулжа — май, теке — июнь, баш оона — июль, аяк оона — август, тогуздун айы — сентябрь, жетинин айы — октябрь, бештин айы — ноябрь, учтун айы — декабрь и бирдин айы — январь.

язык понедельник вторник среда четверг пятница суббота воскресенье
Киргизский дүйшөмбү шейшемби шаршемби бейшемби жума ишемби жекшемби



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2842
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.09.19 18:14. Заголовок: PS Осталось определи..


PS
Осталось определиться. Pasha пишет
 цитата:
Windows Cyrillic Asian ParaType PT-154 ?


клавиатура как ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 68
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 18:36. Заголовок: *да и вообще, на дво..


*да и вообще, на дворе 21 век, век "знакомест", пора бы уже объединенные символы недель, месяцев в виде знаков.
Знаки - международный понятный язык, к примеру дорожные знаки.
Сделать к примеру, порядковый номер недели в круглых рамках, выходные в инверсии к примеру.
Дни недели ① ② ③ ④ ⑤ ➏ ➐
Месяцы Ⅰ, Ⅱ, Ⅲ, Ⅳ, Ⅴ, Ⅵ, Ⅶ, Ⅷ, Ⅸ, Ⅹ, Ⅺ, Ⅻ или ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ну короче тип того
*Ну вообщем понимаете, без UNICODE в дальнейшем не обойтись (не только национальные языки!)

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 69
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 18:38. Заголовок: Клава, посмотрел, дл..


Клава, посмотрел, для UTF8 используется для киргизского - правый Alt Gr + (Уу Нн Оо) соответственно

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3882
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.09.19 19:37. Заголовок: создаем исходник в к..


создаем исходник в кодировке 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 то, что надо, весь алфавит

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2843
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.09.19 20:02. Заголовок: SergKis пишет aSim :..


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 70
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 21:24. Заголовок: нашел другой вариант..


нашел другой вариант вставить символ Юникод, более лучший

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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 71
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 21:28. Заголовок: Более лучший вариант..


Более лучший вариант вставки Юникод:

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.)

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 72
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 21:53. Заголовок: Класс, попробовал ва..


Класс, попробовал вариант 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 ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 73
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 10.09.19 22:44. Заголовок: так как, уже prg-фай..


так как, уже prg-файл в кодировке UTF8, то внутренние сообщения к примеру MsgInfo(cInfo), ...
перекинул через

cInfo:='текст сообщения'
cInfo:=hb_translate(cInfo,'UTF8','RU1251')
MsgInfo(cInfo)

а то вываливались кракозябры (контролы не поддерживают UTF8)

*на всякий случай напомнил кому еще понадобится

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2844
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.09.19 23:39. Заголовок: Новичок пишет Вариан..


Новичок пишет
 цитата:
Вариант SergKis - более подходит - если в этом духе перевести чтобы Юникод на контролах светилась


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6431
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.09.19 01:41. Заголовок: Новичок пишет: откр..


Новичок пишет:

 цитата:
открыл через Visual Studio Code


Можно настроить работу с Харбором и МиниГуи на нём полностью.
Я уже пробовал.
Смотри - http://clipper.borda.ru/?1-3-0-00000621-000-0-0-1558698012

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3883
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 11.09.19 07:51. Заголовок: SergKis пишет: Этот..


SergKis пишет:

 цитата:
Этот вариант для того, что бы ничего не менять в программе (базы 866, cdp 1251). Надо сделать файл utf8 (без bom) в две строки из 6 символов



Пока в харборе нет киргизской кодировки, функция hb_strtoutf8 не будет работать на трех дополнительных буквах. Их же нет в ru1251, и правила перекодировки нет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2846
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.09.19 08:45. Заголовок: Pasha пишет Пока в х..


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]) })
нигде нет перекодировок, символы взяты как есть

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2847
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.09.19 09:29. Заголовок: PS главное использов..


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

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 31 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 571
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет