Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как varbinary ковертировать в UTF-16 / 5 сообщений из 5, страница 1 из 1
21.03.2021, 16:25
    #40055625
Verbovsky Innokenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как varbinary ковертировать в UTF-16
Хочу отправить файл в телеграм функцией
Код: 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.
CREATE FUNCTION [dbo].[fn_Send_File] (@TelegramID bigint, @stream_id uniqueidentifier) 
RETURNS int
AS
BEGIN

DECLARE @Boundary nvarchar(200) = N'----' + CAST(@stream_id AS nvarchar(100))
DECLARE @ContentType nvarchar(1000) = N'multipart/form-data; boundary=' + @Boundary
DECLARE @send nvarchar(max)
SELECT @send = N'--'+ @Boundary +
N'
Content-Disposition: form-data; name="document"; filename="' + name + N'"
Content-Type: Application/pdf

' + CAST(file_stream as varchar(max)) COLLATE SQL_Latin1_General_BIN + N'
--' + @Boundary + N'--'
FROM Docs WHERE stream_id = @stream_id

	DECLARE @url nvarchar(max), @retVal INT, @oXML INT, @bot_token nvarchar(64) = N'***'

	select @url = N'https://api.telegram.org/bot' + @bot_token + N'/sendDocument?chat_id=' + CAST(@TelegramID as varchar) +N'&caption=Файлы'

	EXEC @retVal = sp_OACreate 'MSXML2.ServerXMLHTTP.6.0', @oXML OUTPUT

	EXEC @retVal = sp_OAMethod @oXML, 'open', NULL,'post', @url,'false'
	EXEC @retVal = sp_OAMethod @oXML, 'setRequestHeader',NULL, 'Connection', 'keep-alive' 
	EXEC @retVal = sp_OAMethod @oXML, 'setRequestHeader',NULL, 'Content-Type', @ContentType

	EXEC @retVal = sp_OAMethod @oXML, 'send', NULL, @send

	EXEC sp_OADestroy @oXML
RETURN @retVal
END


Файл приходит битый, поскольку CAST не делает UTF-16. А как конвертировать varbinary в UTF-16 ?

Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64)
Aug 22 2017 17:04:49
Copyright (C) 2017 Microsoft Corporation
Standard Edition (64-bit) on Windows Server 2019 Standard 10.0 <X64> (Build 17763: )
...
Рейтинг: 0 / 0
21.03.2021, 17:13
    #40055638
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как varbinary ковертировать в UTF-16
UTF-16 = nvarchar

Ваш КО.
...
Рейтинг: 0 / 0
22.03.2021, 11:33
    #40055779
Verbovsky Innokenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как varbinary ковертировать в UTF-16
aleks222, может и так, но это не приблизило меня к решению задачи. Конвертация в nvarchar выдает иероглифы.
...
Рейтинг: 0 / 0
22.03.2021, 12:03
    #40055801
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как varbinary ковертировать в UTF-16
дело не в конвертации, а в формате boundary для отправки (там своя кодировка)

https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html
...
Рейтинг: 0 / 0
22.03.2021, 13:10
    #40055838
Verbovsky Innokenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как varbinary ковертировать в UTF-16
Konst_One, спасибо, изучу. Тектовые-то файлы без проблем отправляются, а вот бинарные - нет
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как varbinary ковертировать в UTF-16 / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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