Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sp_send_dbmail кодировка аттача / 12 сообщений из 12, страница 1 из 1
28.09.2021, 11:45
    #40100419
NewIvanovec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
Всем привет.

Отправляю email через sp_send_dbmail.
Результат запрос прикрепляется к письму в виде файла.

Проблема в том, что аттач приходит в кодировке ucs-2 le с BOM

Можно ли сделать кодировку аттача UTF-8 c BOM ?!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SET NOCOUNT ON;

DECLARE @str NVARCHAR(MAX) = 'select 1'

EXEC msdb.dbo.sp_send_dbmail

     @profile_name = 'test',

     @recipients = 'email@email.ru',

     @query = @str,

     @query_attachment_filename = 'test.json',

     @exclude_query_output = 0,

     @query_result_header = 1,

     @query_no_truncate = 1,

     @subject = '(test)',

     @attach_query_result_as_file = 1;
...
Рейтинг: 0 / 0
28.09.2021, 12:23
    #40100427
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
NewIvanovec
Проблема в том, что аттач приходит в кодировке ucs-2 le с BOM
Ну, так сохранили, значит.
Не может же sp_send_dbmail делать перекодировку.
...
Рейтинг: 0 / 0
28.09.2021, 12:33
    #40100429
NewIvanovec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
alexeyvg,

в запросе нет указания кодировки. Это сервер сам выбирает такую кодировку
Код: sql
1.
select 1
...
Рейтинг: 0 / 0
28.09.2021, 13:41
    #40100447
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
NewIvanovec,

NVARCHAR - это ucs-2 le. Сиквел не работает с данными UTF-8. Единственное исключение - это импорт из файла, и только в старших версиях появилось.
...
Рейтинг: 0 / 0
28.09.2021, 14:15
    #40100457
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
Владислав Колосов
Сиквел не работает с данными UTF-8.

Поясните, коллега!
Не понял вашей фразы.
...
Рейтинг: 0 / 0
28.09.2021, 14:16
    #40100458
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
Владислав Колосов
NewIvanovec,

NVARCHAR - это ucs-2 le. Сиквел не работает с данными UTF-8. Единственное исключение - это импорт из файла, и только в старших версиях появилось.


В sql server 2019 появилась возможность работать с utf-8 непосредственно в базе. Для этого были добавлены отдельные collation с UTF8


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
drop table if exists #test
create table #test (
	utf16	nvarchar(100)
	, utf8	varchar(100) collate Cyrillic_General_100_CS_AS_SC_UTF8
	, v	varchar(100) collate Cyrillic_General_100_CS_AS_SC
)

insert #test(utf16, utf8, v)
values  (nchar(209)+ N'ЯZ', nchar(209) + N'ЯZ', nchar(209) + N'ЯZ' 
)




select 
	utf16, DATALENGTH(utf16)
	, utf8, DATALENGTH(utf8) 
	, v, DATALENGTH(v) 
from #test



UPD:
Юникод символы в коде движок форму преобразовал в Ñ
В коде заменил на nchar(209), просто для возможности скопировать пример
...
Рейтинг: 0 / 0
28.09.2021, 14:19
    #40100461
NewIvanovec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
msLex,

в моём случае 2017 версия сервера. что же делать, что же делать :(
...
Рейтинг: 0 / 0
28.09.2021, 17:07
    #40100513
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
SQL2008
Владислав Колосов
Сиквел не работает с данными UTF-8.

Поясните, коллега!
Не понял вашей фразы.

Виимо вы имели в виду Поддержка параметров сортировки и Юникода

Импорт данных в Юникоде был всегде без проблем.
Даже никогда не задумывался, что "не работает" :)
...
Рейтинг: 0 / 0
28.09.2021, 18:51
    #40100531
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
NewIvanovec,

что делать... Не пользоваться системной почтой, написать свою утилиту, тем более, что это не сложно. Даже не зная С# можно за полдня сделать.
...
Рейтинг: 0 / 0
29.09.2021, 10:10
    #40100592
NewIvanovec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
Всё понял, всем спасибо!
...
Рейтинг: 0 / 0
29.09.2021, 11:49
    #40100626
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
Владислав Колосов
NewIvanovec,

что делать... Не пользоваться системной почтой, написать свою утилиту, тем более, что это не сложно. Даже не зная С# можно за полдня сделать.


Ща вы нам расскажите как sp_send_dbmail перекодирует вложения.
Не порите чушЪ. Ей больно.
...
Рейтинг: 0 / 0
29.09.2021, 20:17
    #40100790
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_send_dbmail кодировка аттача
aleks222,

я и не предлагал перекодировать при помощи sp_send_dbmail, я предлагал отказаться от использования этой процедуры.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sp_send_dbmail кодировка аттача / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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