Задать вопрос
Vmalin
@Vmalin
Системный инженер

MatLab. Импорт данных из MS SQL. Кодировка. Как реализовать?

Суть вопроса проста до тривиальности, но уже второй день не могу понять логику - как же необходимо работать.
Простой запрос к таблице данных, содержащей кириллические символы:
%Make connection to database.  Note that the password has been omitted.
%Using ODBC driver.
conn = database('Test', '', '');
%Read data from database.
st = 'select top 10 * from main';
data = fetch(conn, st);
c = data.F(1)


Результат, по идее должен быть таким:
5c1b6211a9354033617807.png
На деле же получаем следующий результат:
5c1b62758d352005374740.png

Чтение инструкций направляет на:
Если у вас возникнут проблемы с поврежденными символами, например, при использовании файлов MATLAB, связанных с моделью, попробуйте использовать функцию slCharacterEncoding, чтобы изменить кодировку символов.

но использование различных комбинаций
% encoding='windows-1251';
% slCharacterEncoding(encoding);

Все-равно приводит к неизменному вышеуказанному результату.
По логике, надо бы изменять кодировку возвращаемых ODBC соединением данных, но как это сделать - не могу сообразить.
Может я вообще не в той степи копаю?
  • Вопрос задан
  • 307 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@art_karetnikov
Лучший мой проект: Мобильный банк Сбербанка РФ.
На unicode это не похоже. Похоже это на классический косяк windows и даже к ODBC отношения не имеет.
Попробуй на другом компе создать файл с кодировкой 1251, текстовый и открыть на этом. Если увидишь то же самое - копай "настройки локали". Для каждой винды там свое решение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Если у вас поле NVARCHAR (UNICODE) вам нужно: Convert Unicode.
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Совершенно непонятно каков тип полей в базе.
так что метод тыкинга:

select top 100
f=cast(f as nvarchar) ,
I=cast(I as varchar)
from main
Ответ написан
Комментировать
Vmalin
@Vmalin Автор вопроса
Системный инженер
Артем Каретников оказался прав. В моем случае ситуация оказалась в том, что у меня в настройках системы стоял английский язык. Конкретнее:
Контрольная панель - Региональные параметры - вкладка Дополнительно - Язык программ, не поддерживающих Юникод
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы