Среда, 12.12.2018, 04:56
Главная Регистрация RSS
Приветствую Вас, Гость
[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Битрикс24 » Интеграция » URI кодировка при передаче параметров в webhook из MS SQL (Кодировка кириллицы при передаче строки в webhook из MS SQL)
URI кодировка при передаче параметров в webhook из MS SQL
IvanDevДата: Вторник, 27.03.2018, 17:11 | Сообщение # 1
Рядовой
Группа: Администраторы
Сообщений: 17
Репутация: 0
Статус: Offline
При передаче параметров REST API (webhook) в Битрикс24 необходимо было передавать параметры на кириллице. Например текст сообщения или тему задачи. Как перекодировать эти параметры для url-строки ?
 
IvanDevДата: Вторник, 27.03.2018, 17:19 | Сообщение # 2
Рядовой
Группа: Администраторы
Сообщений: 17
Репутация: 0
Статус: Offline
1) Создаем хранимую процедуру:
CREATE PROCEDURE [dbo].[MySP_URIEncode](
                                   @url       varchar(max)
, @urlReturn varchar(max) output
)
AS
BEGIN

Declare @count int
      , @c char(1)
  , @i int
  , @nabor varchar(max)

set @nabor = 'd090d091d092d093d094d095d096d097d098d099d09ad09bd09cd09dd09ed09fd0a0d0a1d0a2d0a3d0a4d0a5d0a6d0a7d0a8d0a9d0aad0abd0acd0add0aed0afd0b0d0b1d0b2d0b3d0b4d0b5d0b6d0b7d0b8d0b9d0bad0bbd0bcd0bdd0bed0bfd180d181d182d183d184d185d186d187d188d189d18ad18bd18cd18dd18ed18fd084d194d087d197d086d196'
SET @url = replace(@url, 'ё', 'е')
SET @url = replace(@url, 'Ё', 'Е')
SET @count = Len(@url)
SET @i = 1
SET @urlReturn = ''    
WHILE (@i <= @count)
BEGIN
SET @c = substring(@url, @i, 1)
IF @c LIKE '[A-Za-z0-9()''*-._?! ]'
BEGIN
SET @urlReturn = @urlReturn + @c
END
ELSE
BEGIN
SET @urlReturn =  @urlReturn + '%' + left(SUBSTRING(@nabor,(ascii(@c) - 192) * 4 + 1,4), 2)+
                               '%' +  right(SUBSTRING(@nabor,(ascii(@c) - 192) * 4 + 1,4), 2)
END
SET @i = @i +1
END


END

GO


2) Получаем нужную строчку:
declare @urlReturn varchar(max)
exec MySP_URIEncode
          @url = 'Проверяем, правильно ли отправляется сообщение в Битрикс?'
, @urlReturn = @urlReturn output

select @urlReturn

Готово!
 
IvanDevДата: Пятница, 02.11.2018, 13:06 | Сообщение # 3
Рядовой
Группа: Администраторы
Сообщений: 17
Репутация: 0
Статус: Offline
Были проблемы с некоторыми символами при использовании вышеуказанной процедуры. Немного доработал её:
BEGIN

DECLARE @count int, @c char(1), @i int, @alf varchar(max)

set @alf = 'd090d091d092d093d094d095d096d097d098d099d09ad09bd09cd09dd09ed09fd0a0d0a1d0a2d0a3d0a4d0a5d0a6d0a7d0a8d0a9d0aad0abd0acd0add0aed0afd0b0d0b1d0b2d0b3d0b4d0b5d0b6d0b7d0b8d0b9d0bad0bbd0bcd0bdd0bed0bfd180d181d182d183d184d185d186d187d188d189d18ad18bd18cd18dd18ed18fd084d194d087d197d086d196'
SET @url = replace(@url, 'ё', 'е')
SET @url = replace(@url, 'Ё', 'Е')
SET @url = replace(@url, '№', 'N')
    SET @url = replace(replace(@url,char(171),char(34)),char(187),char(34))
SET @count = Len(@url)
SET @i = 1
SET @urlReturn = ''    
WHILE (@i <= @count)
BEGIN
SET @c = substring(@url, @i, 1)
/*
IF @c LIKE '[A-Za-z0-9()''*-._?!/ ]'
BEGIN
SET @urlReturn = @urlReturn + @c
END
*/
IF @c in ('А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ь','Ъ','Ы','Э','Ю','Я','а','б','в','г','д','е','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ъ','ы','э','ю','я')
BEGIN
           SET @urlReturn = 
   @urlReturn +
   '%' +
   left(SUBSTRING(@alf,(ascii(@c) - 192) * 4 + 1,4), 2)+
   '%' +
   right(SUBSTRING(@alf,(ascii(@c) - 192) * 4 + 1,4), 2)

END
ELSE
BEGIN  
    SET @urlReturn = 
                   @urlReturn + '%'
                   + SUBSTRING(sys.fn_varbintohexstr(CAST(@c AS VARBINARY(MAX))),3,2)
                   + ISNULL(NULLIF(SUBSTRING(sys.fn_varbintohexstr(CAST(@c AS VARBINARY(MAX))),5,2), '00'), '')
   
         END
SET @i = @i +1
END

END
 
Форум » Битрикс24 » Интеграция » URI кодировка при передаче параметров в webhook из MS SQL (Кодировка кириллицы при передаче строки в webhook из MS SQL)
  • Страница 1 из 1
  • 1
Поиск: