Как стать автором
Обновить

Почему тире становится вопросом? Или проблемы с кодированием данных на SQL

Время на прочтение1 мин
Количество просмотров2.1K
Обратился ко мне клиент, которому я полгода назад делала загрузку данных из Excel в список продукции Заявки от клиента. Видео по результату.
Файл формировался в Китае, где не используется привычная нам кириллица.

Загружается товар с таким названием «ABM3C‐25‐D4Y‐T».

Получаем в списке после загрузки «ABM3C?25?D4Y?T».Через ProFiler отловила процедуру записи:

exec 3, 'ABM3C‐25‐D4Y‐T'

То есть замена происходит уже на самом SQL. База данных создана на платформе Клиент Коммуникатор. По привычке проверила параметры сортировки у самой базы данных, всё хорошо — Cyrillic_General_CI_AS, как и рекомендовано при установке.

Поигралась с cast и convert — выдает вопросы вместо тире. Решить проблему самостоятельно не получилось… Обратилась в службу технической поддержки разработчика платформы Клиент Коммуникатор с данной проблемой.

Ответ разработчика сначала сильно удивил: «Надо использовать тип данных Nvarchar, а у Вас видимо используется Varchar». Запись ведется в поле с типом данных nvarchar (ставится по умолчанию при создании поля в конфигураторе).

Показываю, что самый простой скрипт выдает мне всё те же злополучные знаки вопроса.
select 'ABM3C‐25‐D4Y‐T', cast('ABM3C‐25‐D4Y‐T' as nvarchar)

Получила совет — перед первой одинарной кавычкой поставить N.

select N'ABM3C‐25‐D4Y‐T'

выдал мне желаемый результат. Добавив N, мы указали SQL, что обрабатывать данную строку надо как значение в Unicode.

Исправила вызов процедуры, добавив N:

exec 3, N'ABM3C‐25‐D4Y‐T'

Всегда знала, что надо ставить букву N перед кавычкой, но не придавала этому особого значения, пока не столкнулась с данной проблемой.
Теги:
Хабы:
Всего голосов 15: ↑2 и ↓13-10
Комментарии9

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн