Загружается товар с таким названием «ABM3C‐25‐D4Y‐T».
Получаем в списке после загрузки «ABM3C?25?D4Y?T».
Через ProFiler отловила процедуру записи:
exec 3, ‘ABM3C‐25‐D4Y‐T’
То есть замена происходит уже на самом SQL.
По привычке проверила параметры сортировки (кодировка) у самой базы данных, всё хорошо — Cyrillic_General_CI_AS.
Поигралась с cast и convert — выдает вопросы вместо тире.
Решить проблему самостоятельно не получилось… Обратилась в службу технической поддержки разработчика платформы Клиент Коммуникатор с данной проблемой.
Ответ разработчика сначала сильно удивил: «Надо использовать тип данных Nvarchar, а у Вас видимо используется Varchar». Показываю, что самый простой скрипт выдает мне всё те же злополучные знаки вопроса.
select ‘ABM3C‐25‐D4Y‐T’, cast(‘ABM3C‐25‐D4Y‐T’ as nvarchar)
Получила совет — перед первой одинарной кавычкой поставить N.
select N’ABM3C‐25‐D4Y‐T’
выдал мне желаемый результат.
Исправила вызов процедуры, добавив N:
exec 3, N’ABM3C‐25‐D4Y‐T’
Всегда знала, что надо ставить букву N перед кавычкой, но не придавала этому особого значения, пока не столкнулась с данной проблемой.
ссылка на оригинал статьи https://habr.com/ru/post/503366/
Добавить комментарий