Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Кодирование строки в T-SQL для URL  [new]
Serbat_Ivan
Member

Откуда: SQL.RU
Сообщений: 1603
Приветствую уважаемое сообщество профессионалов!
Может быть вопрос не стоит долгих обсуждений, но поиском ничего не нашёл.

Приходилось ли кому-нибудь прямо в T-SQL коде кодировать символьную строку, пригодную для использования при передаче параметров в URL.

Т.е., к примеру, в URL неким параметром NAME нужно передать строку "ВАСЯ" и должно это выглядеть где-то так http://mysrv.ru/myfrm?NAME=%D0%9D%D0%B0%D1% (вместо васи здесь что-то другое, но не суть)

Никак не могу найти способ быстро перевести ВАСЯ в шестнадцатиричный код так чтобы Internet Explorer это дело правильно воспринял...
21 сен 10, 14:36    [9474876]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
http://www.google.com.ua/search?q=urlencode+clr
21 сен 10, 14:43    [9474985]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Serbat_Ivan
Member

Откуда: SQL.RU
Сообщений: 1603
Паганель
http://www.google.com.ua/search?q=urlencode+clr

Спасибо!
Очень похоже, но не то. Т.е., в результирующей форме нужная надпись в нужном поле не появляется...
Я не большой специалист в WEB, но предполагаю, что, может быть, дело в кодировке, использующейся в результирующей форме...
Она там utf-8
21 сен 10, 15:00    [9475233]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Serbat_Ivan
Member

Откуда: SQL.RU
Сообщений: 1603
Serbat_Ivan
Очень похоже, но не то.
Прошу прощения, что так краток... Я имел ввиду вариант с созданием функции UrlEncode на сервере... Результат её работы не подходит...
21 сен 10, 15:02    [9475252]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Serbat_Ivan

Очень похоже, но не то. Т.е., в результирующей форме нужная надпись в нужном поле не появляется...

А что такое результирующая форма в MSSQL ?
21 сен 10, 15:11    [9475343]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Serbat_Ivan
Member

Откуда: SQL.RU
Сообщений: 1603
Glory
Serbat_Ivan

Очень похоже, но не то. Т.е., в результирующей форме нужная надпись в нужном поле не появляется...

А что такое результирующая форма в MSSQL ?
Результирующая форма на WEB.
В хранимке MSSQL формируется письмо, в котором должна быть ссылка, в которой должны зашиваться параметры. Параметры эти - строки, содержащие кирилицу, но, может это и не суть важно...
Так вот, ссылка эта ведёт к страничке на аппаче, а страничка эта содержит некую форму, в которой из значений передаваемых параметров должны заполняться поля. Так вот, страничка эта в UTF-8.

Прошу прощения, что не сразу всё подробно описал.
Сервер: Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
21 сен 10, 15:19    [9475436]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
папа арбуз
Member

Откуда: бахча
Сообщений: 1822
Serbat_Ivan
В хранимке MSSQL формируется письмо


Это как?

Serbat_Ivan
должна быть ссылка, в которой должны зашиваться параметры.


Короче, на WEB сервер вместо параметра передавай путь, содержащий GUID, а с WEB-сервера обращайся к SQL серверу и по этому GUID получай параметры.
21 сен 10, 15:31    [9475564]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Serbat_Ivan
Glory
Serbat_Ivan

Очень похоже, но не то. Т.е., в результирующей форме нужная надпись в нужном поле не появляется...

А что такое результирующая форма в MSSQL ?
Результирующая форма на WEB.
В хранимке MSSQL формируется письмо, в котором должна быть ссылка, в которой должны зашиваться параметры.

И что мешает в текст письма встаивить все, что вам угодно ?
21 сен 10, 15:33    [9475584]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Serbat_Ivan
Member

Откуда: SQL.RU
Сообщений: 1603
папа арбуз
Serbat_Ivan
В хранимке MSSQL формируется письмо


Это как?


Вот так

папа арбуз
Короче, на WEB сервер вместо параметра передавай путь, содержащий GUID, а с WEB-сервера обращайся к SQL серверу и по этому GUID получай параметры.

Веб-сервер для меня внешний и там я ничего сделать не могу, не говоря уже о том чтобы впустить его к себе в базу...
21 сен 10, 15:35    [9475604]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Serbat_Ivan
Member

Откуда: SQL.RU
Сообщений: 1603
Glory
И что мешает в текст письма встаивить все, что вам угодно ?
Ничего не мешает, в тексте всё есть.
По ходу текста есть ссылка на форму-опросник, так вот в этой ссылке хочется в форму-опросник передать кое-какие данные. Их, собственно, и не получается закодировать нужным образом...
21 сен 10, 15:36    [9475622]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Serbat_Ivan
Glory
И что мешает в текст письма встаивить все, что вам угодно ?
Ничего не мешает, в тексте всё есть.
По ходу текста есть ссылка на форму-опросник, так вот в этой ссылке хочется в форму-опросник передать кое-какие данные. Их, собственно, и не получается закодировать нужным образом...

Ну а каким вам нужно то ? Скажите уже
21 сен 10, 15:41    [9475673]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
папа арбуз
Member

Откуда: бахча
Сообщений: 1822
Serbat_Ivan
Веб-сервер для меня внешний и там я ничего сделать не могу, не говоря уже о том чтобы впустить его к себе в базу...


Поставь свой, ссылку на него, по ссылке - достать адрес из базы и редирект на тот сервер.
21 сен 10, 15:42    [9475682]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Serbat_Ivan
Member

Откуда: SQL.RU
Сообщений: 1603
папа арбуз
Serbat_Ivan
Веб-сервер для меня внешний и там я ничего сделать не могу, не говоря уже о том чтобы впустить его к себе в базу...


Поставь свой, ссылку на него, по ссылке - достать адрес из базы и редирект на тот сервер.
Да, можно ещё пару-тройку сотен гастарбайтеров посадить, пусть на лету запросы обрабатывают и руками вбивают результаты... :-)
21 сен 10, 15:43    [9475694]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Serbat_Ivan
Member

Откуда: SQL.RU
Сообщений: 1603
Glory
Ну а каким вам нужно то ? Скажите уже
Видимо, если бы я знал точно каким, мне бы и не пришлось сюда писать :-)

Вот это правильно закодированный Вася Пупкин: %D0%92%D0%B0%D1%81%D1%8F%20%D0%9F%D1%83%D0%BF%D0%BA%D0%B8%D0%BD

Нужно найти способ как прямо в T-SQL коде кодировать вот так же :)
21 сен 10, 15:55    [9475835]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Serbat_Ivan, как вариант - напишите функцию, которая побуквенно будет разбирать и кодировать.
Предварительно поготовьте тока таблицу перекодировки.
21 сен 10, 16:01    [9475908]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Serbat_Ivan
Member

Откуда: SQL.RU
Сообщений: 1603
kDnZP
Serbat_Ivan, как вариант - напишите функцию, которая побуквенно будет разбирать и кодировать.
Предварительно поготовьте тока таблицу перекодировки.
Да, спасибо, я, в принципе так сразу и решил сделать, когда сам не нашёл стандартного решения, просто подумал, может кто-то уже решал эту задачу и есть какое-то красивое (или, хотя бы, готовое :)) решение...
21 сен 10, 16:04    [9475948]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Serbat_Ivan
kDnZP
Serbat_Ivan, как вариант - напишите функцию, которая побуквенно будет разбирать и кодировать.
Предварительно поготовьте тока таблицу перекодировки.
Да, спасибо, я, в принципе так сразу и решил сделать, когда сам не нашёл стандартного решения, просто подумал, может кто-то уже решал эту задачу и есть какое-то красивое (или, хотя бы, готовое :)) решение...

Поделюсь по старой памяти
CREATE FUNCTION dbo.UrlEncode(@url varchar(1024))
RETURNS varchar(3072)
AS
 BEGIN
    DECLARE @count int, @c char(1), @i int, @urlReturn varchar(3072)
    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 + '%' + SUBSTRING(sys.fn_varbintohexstr(CAST(@c as varbinary(max))),3,2)
         END
        SET @i = @i +1
     END
    RETURN upper(@urlReturn)
 END
21 сен 10, 16:07    [9475997]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Serbat_Ivan,
Отута: http://sqlblog.com/blogs/peter_debetta/archive/2007/03/09/t-sql-urlencode.aspx
21 сен 10, 16:08    [9476006]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
любитель кодировок
Guest
Serbat_Ivan,
А обязательно в t-sql? CLR - функцию нельзя использовать?
21 сен 10, 16:08    [9476012]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
kDnZP
Serbat_Ivan,
Отута: http://sqlblog.com/blogs/peter_debetta/archive/2007/03/09/t-sql-urlencode.aspx

Спалил, однако...
21 сен 10, 16:09    [9476020]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Serbat_Ivan
Member

Откуда: SQL.RU
Сообщений: 1603
SQL2008
kDnZP
Serbat_Ivan,
Отута: http://sqlblog.com/blogs/peter_debetta/archive/2007/03/09/t-sql-urlencode.aspx

Спалил, однако...
Спасибо, но я ещё раньше это спалил, только не подходит...

Выдаёт на Вася Пупкин
%c2%e0%f1%ff %cf%f3%ef%ea%e8%ed
А надо
%D0%92%D0%B0%D1%81%D1%8F%20%D0%9F%D1%83%D0%BF%D0%BA%D0%B8%D0%BD
21 сен 10, 16:12    [9476048]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Serbat_Ivan, разная длина не смущает? ;)
21 сен 10, 16:17    [9476107]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Serbat_Ivan, типа отак: Вася Пупкин?
21 сен 10, 16:19    [9476122]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
Serbat_Ivan
Member

Откуда: SQL.RU
Сообщений: 1603
kDnZP
Serbat_Ivan, разная длина не смущает? ;)
Смущает, предполагаю, что через символ какие-то управляющие символы идут "D0" и "D1", но чем это мне может помочь, пока не понял...
21 сен 10, 16:22    [9476164]     Ответить | Цитировать Сообщить модератору
 Re: Кодирование строки в T-SQL для URL  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
kDnZP
Serbat_Ivan, разная длина не смущает? ;)

Он все правильно написал. Там на символ выделяется 2 байта, и буква "В" кодируется как "%D0%92".

P.S. Кстати у меня 666 пост!
Объявляю перерыв на неделю
21 сен 10, 16:24    [9476185]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить