powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Спец символ юникода сохранить в текстовое поле
3 сообщений из 3, страница 1 из 1
Спец символ юникода сохранить в текстовое поле
    #40014433
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, добрый день. Возникла не стандартная для меня задача.

Есть сервис отправки писем.

В одном письме в html-коде использовали некий спец символ юникода '🎉'.
При вставке в таблицу очередь в поле типа varchar этот символ превращается в "??".
Т.е. до самой отправки в сервисе дело не доходит. Проблема в сохранении символа в базе для последующей отправки.
Тестировал разные варианты. В справке почитал, что для работы с юникодом надо использовать типы nchar\nvarchar.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
declare
	@t1 varchar(100) = '🎉',
	@t2 nvarchar(100) = '🎉'
	,@t3 nvarchar(100) = '🎉' collate cyrillic_general_ci_as

select t1 = @t1, t2 = @t2, t3 = @t3, [ASCII] = ASCII('🎉'), [UNICODE] = UNICODE('🎉'), nc = NCHAR(UNICODE(@t2))

select nc_10 = nchar(127881), nc_16 = nchar(0x1F389)


Результат:
t1 t2 t3 ASCII UNICODE nc
?? ?? ?? 63 63 ?

nc_10 nc_16
NULL NULL

Подскажите, куда копать? Как в базе корректно сохранить этот символ?

p.s. Когда отправил сообщение, увидел, что символ заменился на код внутри тэга кода.
---
Проходя мимо разложенных граблей, ты теряешь драгоценный опыт. (с)
...
Рейтинг: 0 / 0
Спец символ юникода сохранить в текстовое поле
    #40014437
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte
p.s. Когда отправил сообщение, увидел, что символ заменился на код.

Наверное, это в теге SRC
select N'🎉'
Код: sql
1.
select N'🎉'



В varchar, понятно, никакого юникода быть не может, используйте nvarchar

И перед константами юникода ставьте символ N
...
Рейтинг: 0 / 0
Спец символ юникода сохранить в текстовое поле
    #40014445
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Megabyte
p.s. Когда отправил сообщение, увидел, что символ заменился на код.

Наверное, это в теге SRC
select N'🎉'
Код: sql
1.
select N'🎉'



В varchar, понятно, никакого юникода быть не может, используйте nvarchar

И перед константами юникода ставьте символ N

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


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