Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Кодировка при получении ответа с HTTP сервера в MS SQL  [new]
Коляндер
Member

Откуда: СПб
Сообщений: 188
Здравствуйте. MS SQL 2014 Получаю данные с сервера при помощи sp_OACreate 'WinHttp.WinHttpRequest.5.1' В ответе все русские буквы выглядят как знаки вопроса ???
Поле ответа сделал в NVARCHAR(4000)
С сервера возвращаются UTF-8
Понятно что дело в кодировке, но когда я делаю полю ответа COLLATE SQL_Latin1_General_CP850_Bin или любую другую, ничего не меняется.

Очень прошу помощи
22 апр 18, 15:19    [21358209]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка при получении ответа с HTTP сервера в MS SQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9347
Коляндер,

Изучайте:
declare @h int, @hr int;

declare @t1 table (s nvarchar(max));
declare @t2 table (s varchar(max) collate Latin1_General_CI_AS);
declare @t3 table (s varchar(max) collate Cyrillic_General_CI_AS);

exec @hr = sp_OACreate 'WinHttp.WinHttpRequest.5.1', @h output;
if @hr <> 0 exec sp_OAGetErrorInfo @h;

exec @hr = sp_OAMethod @h, 'Open', null, 'GET', N'https://www.mos.ru', 'false';
if @hr <> 0 exec sp_OAGetErrorInfo @h

exec @hr = sp_OAMethod @h,'Send';
if @hr <> 0 exec sp_OAGetErrorInfo @h;

insert into @t1
 exec @hr = sp_OAGetProperty @h, N'ResponseText';
if @hr <> 0 exec sp_OAGetErrorInfo @h;

insert into @t2
 exec @hr = sp_OAGetProperty @h, N'ResponseText';
if @hr <> 0 exec sp_OAGetErrorInfo @h;

insert into @t3
 exec @hr = sp_OAGetProperty @h, N'ResponseText';
if @hr <> 0 exec sp_OAGetErrorInfo @h;

exec @hr=sp_OADestroy @h;
if @hr <> 0 exec sp_OAGetErrorInfo @h;
   
select substring(s, charindex('<title', s), charindex('<title', s) + 100) from @t1 where s like '%charset=UTF-8%';
select substring(s, charindex('<title', s), charindex('<title', s) + 100) from @t2 where s like '%charset=UTF-8%';
select substring(s, charindex('<title', s), charindex('<title', s) + 100) from @t3 where s like '%charset=UTF-8%';
22 апр 18, 22:18    [21359107]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить