1 (изменено: DD, 2018-10-27 12:31:26)

Тема: AHK: Конвертер юникодных символов в HTML-код

Имеется ли конвертер юникодных символов со страницы — в HTML-код? К примеру, это — «ω», на это — «ω»?

2 (изменено: rowe, 2018-10-27 15:35:43)

Re: AHK: Конвертер юникодных символов в HTML-код

string = ω
Transform, out, HTML, % string, 2
MsgBox % out

3

Re: AHK: Конвертер юникодных символов в HTML-код

А если требуется обработать все юникодные символы, а не конкретный? Их для этого все надо указать?

4

Re: AHK: Конвертер юникодных символов в HTML-код

Тоже самое для буфера обмена.

Transform, Clipboard, HTML, %Clipboard%, 2
MsgBox % Clipboard 
+ DD

5

Re: AHK: Конвертер юникодных символов в HTML-код

Для конвертации символов в виде кода, было так:

msgbox % JavaEscapedToHtml("\u00bbtest\u00bb")

JavaEscapedToHtml(s) {
    i := 1
    while j := RegExMatch(s, "\\u[A-Fa-f0-9]{1,4}", m, i)
        e .= SubStr(s, i, j-i) Chr("0x" SubStr(m, 3)), i := j + StrLen(m)
    Transform, OutputVar, HTML, % e . SubStr(s, i)
    return OutputVar
}

6

Re: AHK: Конвертер юникодных символов в HTML-код

DD пишет:

А если требуется обработать все юникодные символы, а не конкретный? Их для этого все надо указать?

В справке по этой команде всё написано.

7 (изменено: DD, 2018-10-28 01:02:41)

Re: AHK: Конвертер юникодных символов в HTML-код

Спасибо, удалось приспособить код Деда Мазая, но при этом обрабатывается также кириллица и удаляются пробелы. Как задать исключения, или конвертировать только собственно юникодные символы, а не те, что могут нормально отображаться и в ANSI-кодировке?

;http://forum.script-coding.com/viewtopic.php?pid=7971#p7971
; UNICODE Encryption

n = 1 ; задать порядковый номер читаемого символа буфера обмена

F4::
StringLen, i, Clipboard ; определить длину строки в буфере обмена -> %i%
Loop, %i% ; повторять процесс согласно количества символов в строке буфера обмена
{ 
StringMid, Symbol, Clipboard, %n%, 1 ; прочитать один символ из строки буфера обмена, начиная с первого -> %Symbol%
Transform, UNICODE, HTML, %Symbol%, 2 ; перекодировать полученный символ в код HTML
Code = %UNICODE% ; добавить фигурные скобки
Done = %Done%%Code% ; добавить полученное в конец строки переменной -> %Done%
n += 1 ; увеличить число на единицу, для чтения следующего символа буфера обмена
}
Clipboard = %Done% ; вернуть итоговые данные в буфер обмена
Done = ; очистить переменную Done для последующего использования
n = 1 ; вернуть номер читаемого символа на единицу
SplashTextOn, 400, 180, UNICODE Encryption, `n`n All job done`n successfully ; сообщение об успешном  завершении работы
Sleep, 500
SplashTextOff
Return

8

Re: AHK: Конвертер юникодных символов в HTML-код

Как исключить в примере кириллицу и пробелы?

exclude:="а, " 

str =
(
#. ;а
)

n = 1 ; задать порядковый номер читаемого символа буфера обмена
StringLen, i, str ; определить длину строки в буфере обмена -> %i%
Loop, %i% ; повторять процесс согласно количества символов в строке буфера обмена
{ 
StringMid, Symbol, str, %n%, 1 ; прочитать один символ из строки буфера обмена, начиная с первого -> %Symbol%

;If Symbol in % exclude ;If ( Symbol = " " )
;  Continue

Transform, UNICODE, HTML, %Symbol%, 2 ; перекодировать полученный символ в код HTML
Done = %Done%%UNICODE% ; добавить полученное в конец строки переменной -> %Done%
n += 1 ; увеличить число на единицу, для чтения следующего символа буфера обмена
}
msgbox %Done%
n = 1 ; вернуть номер читаемого символа на единицу
Return

9

Re: AHK: Конвертер юникодных символов в HTML-код

Понять как работает код и составить условие.
Условие вы составили, осталось понять работу скрипта.

10

Re: AHK: Конвертер юникодных символов в HTML-код

Дык если б понял — и вопрос не стоял, потому и требуется намёк)).

11

Re: AHK: Конвертер юникодных символов в HTML-код

А что именно непонятно, там же все расписано.
Скрипт перебирает посимвольно буфер обмена, перекодирует каждый символ и добавляет его к переменной Done.
Это все можно заменить Loop, Parse.

12

Re: AHK: Конвертер юникодных символов в HTML-код

Почему пробел не добавляет к переменной Done? Как сделать, чтобы не затрагивался не-юникод, ведь все равно нельзя будет перечислить все символы, которые не следует обрабатывать?

13 (изменено: teadrinker, 2018-10-29 21:28:08)

Re: AHK: Конвертер юникодных символов в HTML-код

Вот так можно:

MsgBox, % AnsiTestChar("ω") . "`n" . AnsiTestChar("ё")

AnsiTestChar(char)  {
   VarSetCapacity(buff, 1, 0)
   StrPut(char, &buff, "cp0")
   Return StrGet(&buff, 1, "cp0") == char
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
+ DD

14

Re: AHK: Конвертер юникодных символов в HTML-код

Что тут не так сделано? —

str =
(
#   ё`.....;
)

n = 1 ; задать порядковый номер читаемого символа буфера обмена
StringLen, i, str ; определить длину строки в буфере обмена -> %i%
Loop, %i% ; повторять процесс согласно количества символов в строке буфера обмена
{ 
   StringMid, char, str, %n%, 1 ; прочитать один символ из строки буфера обмена, начиная с первого -> %char%

   AnsiTestChar(char)
   if not (char == 1)
      Transform, UNICODE, HTML, %char%, 2 ; перекодировать полученный символ в код HTML

   Done = %Done%%UNICODE% ; добавить полученное в конец строки переменной -> %Done%
   n += 1 ; увеличить число на единицу, для чтения следующего символа буфера обмена
}
msgbox %Done%
n = 1 ; вернуть номер читаемого символа на единицу
Return

AnsiTestChar(char)  {
   VarSetCapacity(buff, 1, 0)
   StrPut(char, &buff, "cp0")
   Return StrGet(&buff, 1, "cp0") == char
}

15

Re: AHK: Конвертер юникодных символов в HTML-код

str := "Кириллица ω"
MsgBox, % ConvertToHtml(str)

ConvertToHtml(str)  {
   Loop, parse, str
   {
      if AnsiTestChar(A_LoopField)
         htmlStr .= A_LoopField
      else  {
         Transform, out, HTML, % A_LoopField, 2
         htmlStr .= out
      }
   }
   Return htmlStr
}

AnsiTestChar(char)  {
   VarSetCapacity(buff, 1, 0)
   StrPut(char, &buff, "cp0")
   Return StrGet(&buff, "cp0") == char
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: Конвертер юникодных символов в HTML-код

Спасибо в юникоде!

17 (изменено: DD, 2018-11-02 00:52:42)

Re: AHK: Конвертер юникодных символов в HTML-код

18 (изменено: DD, 2018-11-02 00:52:25)

Re: AHK: Конвертер юникодных символов в HTML-код

19 (изменено: DD, 2018-11-02 01:16:52)

Re: AHK: Конвертер юникодных символов в HTML-код

Как произвести обратную конвертацию из буквальных символов — в код в формате из скрипта?

HTM = 
(
à 
á 
â 
ã 
ä 
å 
ïîäåëèëñÿ ïóáëèêàöèåé
)

MsgBox, % ComUnHTML( HTM )

ComUnHTML(html) {
	oHTML := ComObjCreate("HtmlFile")
	oHTML.write(html)
	return oHTML.documentElement.innerText
}

20

Re: AHK: Конвертер юникодных символов в HTML-код

Лично мне вопрос непонятен.

21 (изменено: DD, 2018-11-02 03:25:44)

Re: AHK: Конвертер юникодных символов в HTML-код

Имелось в виду, что скрипт выше конвертирует символьный код вида &xxxх; — на символы в буквальном виде, кириллицу и т.п. А хотелось бы обратного результата, чтобы кириллица и т.п., из буквального вида — конвертировалась в символьный код в формате &xxxх;, как в переменной скрипта.
Нужно это для формирования пунктов дерева TOC формата HTML Help (CHM), в котором любые символы в Юникоде или в любом другом HTML-формате, отображаются как знаки вопросов.

22

Re: AHK: Конвертер юникодных символов в HTML-код

Читайте внимательно команду transform.

23

Re: AHK: Конвертер юникодных символов в HTML-код

Уже пробовал, экспериментировал с флагами, но Юникод не обрабатывается:

str = 
(
ωωωωω
Кириллица Kirillitsa 
"&<>
)
MsgBox, % ConvertToHtml(str)

ConvertToHtml(str)  {
   Loop, parse, str
   {
      ;if AnsiTestChar(A_LoopField)
      ;   htmlStr .= A_LoopField
      ;else  {
         Transform, out, HTML, % A_LoopField
         htmlStr .= out
      ;}
   }
   Return htmlStr
}

AnsiTestChar(char)  {
   VarSetCapacity(buff, 1, 0)
   StrPut(char, &buff, "cp0")
   Return StrGet(&buff, "cp0") == char
}

24

Re: AHK: Конвертер юникодных символов в HTML-код

Просто, наверное, в исходнике не для всех символов прописаны имена, а только числа.
Так как такой код тоже не трансформирует

oHTML := ComObjCreate("HTMLFile")
p := oHTML.createElement("p")
p.innerText := "я"
msgbox % p.innerHTML

то можете создать свой парсер, который будет заменять уже все символы.
https://www.w3.org/TR/html5/syntax.html … references

+ DD