Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Кодировка при получении ответа с HTTP сервера в MS SQL / 2 сообщений из 2, страница 1 из 1
22.04.2018, 15:19
    #39634350
Коляндер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при получении ответа с HTTP сервера в MS SQL
Здравствуйте. MS SQL 2014 Получаю данные с сервера при помощи sp_OACreate 'WinHttp.WinHttpRequest.5.1' В ответе все русские буквы выглядят как знаки вопроса ???
Поле ответа сделал в NVARCHAR(4000)
С сервера возвращаются UTF-8
Понятно что дело в кодировке, но когда я делаю полю ответа COLLATE SQL_Latin1_General_CP850_Bin или любую другую, ничего не меняется.

Очень прошу помощи
...
Рейтинг: 0 / 0
22.04.2018, 22:18
    #39634411
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при получении ответа с HTTP сервера в MS SQL
Коляндер,

Изучайте:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
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%';
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Кодировка при получении ответа с HTTP сервера в MS SQL / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]