powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как varbinary ковертировать в UTF-16
5 сообщений из 5, страница 1 из 1
Как varbinary ковертировать в UTF-16
    #40055625
Verbovsky Innokenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу отправить файл в телеграм функцией
Код: 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
Как varbinary ковертировать в UTF-16
    #40055638
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UTF-16 = nvarchar

Ваш КО.
...
Рейтинг: 0 / 0
Как varbinary ковертировать в UTF-16
    #40055779
Verbovsky Innokenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222, может и так, но это не приблизило меня к решению задачи. Конвертация в nvarchar выдает иероглифы.
...
Рейтинг: 0 / 0
Как varbinary ковертировать в UTF-16
    #40055801
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дело не в конвертации, а в формате 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
Как varbinary ковертировать в UTF-16
    #40055838
Verbovsky Innokenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One, спасибо, изучу. Тектовые-то файлы без проблем отправляются, а вот бинарные - нет
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как varbinary ковертировать в UTF-16
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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