В какой кодировке хранятся данные в MS SQL 1C?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) при установке mssql выбирается кодировка. 1С работает только с выбранной Unicode Cyrillic_General.
"„Ќј®Е6љ6\u0011зL-]MZ4" это откуда и как получено? Скорее всего при получении в другой кодировке. Просто сбита кодировка при декодировании в неверную кодировку.
"„Ќј®Е6љ6\u0011зL-]MZ4" это откуда и как получено? Скорее всего при получении в другой кодировке. Просто сбита кодировка при декодировании в неверную кодировку.
(4) Обычно, когда спрашивают про кодировку, имеют в виду строковые поля :) Ибо она только для них имеет смысл.
_IDRRef - не текстовое поле. Это одинэсная ссылка. GUID упакованный в binary.
Соответственно, та строка что ты видишь - это просто отображение двоичных данных в какой-то кодировке (неважно какой - это уже зависит от инструмента, которым смотришь). Тоже самое, как если бы ты открыл исполняемый файл в текстовом редакторе и сетовал на непонятные буквы.
_IDRRef - не текстовое поле. Это одинэсная ссылка. GUID упакованный в binary.
Соответственно, та строка что ты видишь - это просто отображение двоичных данных в какой-то кодировке (неважно какой - это уже зависит от инструмента, которым смотришь). Тоже самое, как если бы ты открыл исполняемый файл в текстовом редакторе и сетовал на непонятные буквы.
(7) Смотря откуда, чем и с какой целью читаешь. Если из 1С через ADO, то проще всего поискать готовые примеры. Не ты первый парсишь ссылки 1С прямыми запросами. Там надо некоторые байты еще переставить - часть последних байтов гуида 1С переносит вперед (относящихся ко времени создания), чтобы основная вставка данных шла в конец индекса.
Если тебе просто на позырить, то тот же dbForge из коробки умеет небольшие двоичные типы данных отображать в шестнадцатеричке.
ЗЫ. Хм, хотя Management Studio 2014 сервера тоже нормально показывает...
Если тебе просто на позырить, то тот же dbForge из коробки умеет небольшие двоичные типы данных отображать в шестнадцатеричке.
ЗЫ. Хм, хотя Management Studio 2014 сервера тоже нормально показывает...
(16) Думаю, у тебя все же проблемы с поиском
https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017
Возможно вам пригодится такой код:
Выборка = Соединение.Execute(ТекстЗапроса);
Если Выборка.EOF() = 0 Тогда
КоличествоКолонок = Выборка.Fields.Count - 1;
ТЗ = Новый ТаблицаЗначений;
Для Сч = 0 По КоличествоКолонок Цикл
ИмяКолонки = Выборка.Fields(Сч).Name;
ТЗ.Колонки.Добавить(ИмяКолонки);
КонецЦикла;
Данные = Выборка.GetRows().Выгрузить();
Для Каждого Стр Из Данные Цикл Н = ТЗ.Добавить(); Для Сч = 0 По КоличествоКолонок Цикл Н[Сч] = Стр[Сч] КонецЦикла КонецЦикла;
Таб.ФиксацияСверху = 1;
Для Сч = 1 По КоличествоКолонок + 1 Цикл
Таб.Область(1, Сч).Текст = ТЗ.Колонки[Сч - 1].Имя
КонецЦикла;
ТекущаяСтрока = 2;
Для Каждого Стр Из ТЗ Цикл
Для Сч = 0 По КоличествоКолонок Цикл
А = Стр[Сч];
Если ТипЗнч(А) = Тип("Массив") Тогда
Если А.Количество() = 16 Тогда
Таб.Область(ТекущаяСтрока, Сч + 1).Текст = Ч16[А[12]] + Ч16[А[13]] + Ч16[А[14]] + Ч16[А[15]] + "-" + Ч16[А[10]] + Ч16[А[11]] + "-" + Ч16[А[8]] + Ч16[А[9]] + "-" + Ч16[А[0]] + Ч16[А[1]] + "-" + Ч16[А[2]] + Ч16[А[3]] + Ч16[А[4]] + Ч16[А[5]] + Ч16[А[6]] + Ч16[А[7]];
КонецЕсли;
Иначе
Таб.Область(ТекущаяСтрока, Сч + 1).Текст = А;
КонецЕсли;
КонецЦикла;
ТекущаяСтрока = ТекущаяСтрока + 1;
КонецЦикла;
КонецЕсли;
ПоказатьЧ16 = Новый Массив(256);
Символы16 = "0123456789abcdef";
Для Сч = 0 По 255 Цикл
Ч16[Сч] = Сред(Символы16, Цел(Сч / 16) + 1, 1) + Сред(Символы16, Сч % 16 + 1, 1)
КонецЦикла;
Прикрепленные файлы:

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот