Показать сообщение отдельно
Старый 17.01.2020, 18:41   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,656 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Если у Вас поле имеет тип именно varchar(), т.е. это не unicode, то корректно прочитать данные из этого поля можно только и исключительно в том случае, если текущая кодовая страница "читающей" стороны совпадает с той кодовой страницей в которой происходила запись в это поле

Т.е., например, если у Вас при записи была кодовая страница 866, то и читать Вы должны при текущей кодовой странице 866 и никак иначе. В противном случае, вопросики и получите

Перекодировка прочитанного значения смысла уже не имеет. Вы должны перекодировать в момент чтения, а не "после". У Вас уже результат чтения не корректный. Вам надо или с собственно запросами экспериментировать или какие-то настройки среды чтения делать. Возможны еще настройки подключения, но это обычно у ODBC есть автотранслейт.

На форуме https://www.sql.ru/forum/microsoft-sql-server поищите рекомендации. Там полно подобных вопросов типа: запускаю отсюда - нормально, а запускаю отсюда - вопросики

-----------------

Решение "в лоб", если лень искать настройки, это примерно такой запрос

X++:
SELECT ColumnName collate Cyrillic_General_CI_AS

FROM dbo.TABLENAME
Явное указание в какой кодировке читать значение поля таблицы. Это, разумеется, не очень удобно, но можно проверить саму идею
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 17.01.2020 в 19:06.
За это сообщение автора поблагодарили: FrolovAndy (1).