Size: a a a

2018 October 20

SC

Sarcastic Cat in Lua in Moscow
про  %02X там выше написано. %X - это hex, uppercase. 02 - это два символа, недостающие заменяются нулями
источник

SC

Sarcastic Cat in Lua in Moscow
про это написано в https://www.lua.org/pil/20.html
источник

SC

Sarcastic Cat in Lua in Moscow
впринципе, можно взять любую доку на printf в C, суть та же
источник

AS

Anatoliy S in Lua in Moscow
Ясно, буду разбираться, короче это идет из С как я понял, читать описание функции printf и еще из С если что в Луа непонятно
источник

SC

Sarcastic Cat in Lua in Moscow
в данном случае - да
источник

IC

Ilya Chesnokov in Lua in Moscow
Anatoliy S
читаю у Иерусаличего и в https://www.lua.org/pil/20.3.html встречаю набор с 3мя %, %%%02X, как это можно понять? В частности

[QUOTE]The corresponding encoding is also easy to write. First, we write the escape function; this function encodes all special characters as a %´ followed by the character ASCII code in hexadecimal (the format option "%02X" makes an hexadecimal number with two digits, using 0 for padding), and then changes spaces to +´:
function escape (s)
s = string.gsub(s, "([&=+%c])", function (c)
                                               return string.format ("%%%02X", string.byte©)
                                          end)
       s = string.gsub(s, " ", "+")
       return s

end
[/QUOTE]

"%%%02X"  - что тут означают аж три знака % ?, первый надо понимать экранирующий, но зачем после него еще два знака % а не один? Т.к. сказано что опцией является %02X а не %%02X

И еще вопрос - что делает опция %02X? т.к. в описании к функции format именно такой опции я не встретил:

[QUOTE]string.format (formatstring, ···)
Returns a formatted version of its variable number of arguments following the description given in its first argument (which must be a string). The format string follows the same rules as the printf family of standard C functions. The only differences are that the options/modifiers *, l, L, n, p, and h are not supported and that there is an extra option, q. The q option formats a string in a form suitable to be safely read back by the Lua interpreter: the string is written between double quotes, and all double quotes, newlines, embedded zeros, and backslashes in the string are correctly escaped when written. For instance, the call
    string.format('%q', 'a string with "quotes" and \n new line')

will produce the string:

    "a string with \"quotes\" and \
     new line"

The options c, d, E, e, f, g, G, i, o, u, X, and x all expect a number as argument, whereas q and s expect a string.

This function does not accept string values containing embedded zeros, except as arguments to the q option.

[/QUOTE]

Надо понимать что это составная опция из указанных выше, только чтото не совсем пойму как она действует
Только он Иерусалимский (а лучше просто Роберто)
источник

AS

Anatoliy S in Lua in Moscow
Потихоньку стал понимать, и еще вопрос, там в программе ( я ее сверху немного с ошибкой запостил)                                           function escape (s)
s = string.gsub(s, "[&=+%%%c]", function (c)                                                                                                                                                                                                                                     return  string.format("%%%02X",  string.byte(c))
                                       end)
                                                                s = string.gsub(s, " ", "+")
return s
end
источник

AS

Anatoliy S in Lua in Moscow
диапазон  [&=+%%%c] - я так понял означает  знаки &, = (один или более знаков равно),  два знака % дают один знак процента, т.к. один из них экранирует другой а оставшиеся %с означают управляющий символ, правильно?
источник

AS

Anatoliy S in Lua in Moscow
Кстати у Иерусалимского в книге в этой программе - [&=+%%%c]  а на сайте lua.org  - https://www.lua.org/pil/20.3.html  в этой программе [&=+%c]
источник

AS

Anatoliy S in Lua in Moscow
И кстати какой из этих вариантов правильный?
источник

MA

Mons Anderson in Lua in Moscow
Смотря что считать правильным
Если мы говорим про url-encoding, то % должен входить
источник

AS

Anatoliy S in Lua in Moscow
Mons Anderson
Смотря что считать правильным
Если мы говорим про url-encoding, то % должен входить
Правильно, значит получается на https://www.lua.org/pil/20.3.html ошибка, если кодировать в URL а там перед кодировкой в символьной последовательности будет % то его тоже надо перекодировать
источник

MA

Mons Anderson in Lua in Moscow
да
источник

AS

Anatoliy S in Lua in Moscow
И еще пожалуйста - в шаблоне [&=+%%%c] (или в [&=+%c] ) плюс я так понимаю относится к знаку "=" ? то есть один или более знаков = подряд, или же к обоим знакам &=      ?
источник

MA

Mons Anderson in Lua in Moscow
нет. внутри [ ... ] идёт перечисление
источник

MA

Mons Anderson in Lua in Moscow
т.е. буквально &, =, +, % и спецсимволы из категории %c
источник

MA

Mons Anderson in Lua in Moscow
Посмотрите что-такое url-encoding в принципе, должно стать понятнее что происходит
источник

AS

Anatoliy S in Lua in Moscow
Просто у Иерусалимского вроде как написано - Магическими  символами  являются
(  )  .  %  +  -  *  ?  [  ]  ^  $
Символ   '%'   работает   для   этих   магических   символов   как   экран
источник

AS

Anatoliy S in Lua in Moscow
'[%[%]]'   соответствует   квадратным   скобкам
источник

AS

Anatoliy S in Lua in Moscow
То есть я подумал - что раз + магический символ и без экранирования то значит он не означает прямо плюс а относится к предыдущему знаку
источник