|
Кодировка при подключении к внешнему источнику данных(MySQL) | ☑ | ||
---|---|---|---|---|
0
assest
10.11.15
✎
10:29
|
чвпаи
|
|||
1
assest
10.11.15
✎
10:29
|
Платформа 8.3
Подключаюсь к базе. Строка Соединения: |DRIVER={MySQL ODBC 3.51 |SERVER=192.168.1.112; |DATABASE=parserbosch;" Вижу таблицы, добавляю их. Обращаюсь запросам к ним. Пример одного из полей "Лодочные моторы Внутри СЃСѓРґРЅР°", что равно "Лодочные моторы Внутри судна". это кодировка CP1251 Пробовал подключаться и устанавливать соединение с параметром CODEPAGE=CP1251; CODEPAGE=UTF-8; CODEPAGE=UTF8; При первом варианте ошибка, при втором и третьим без изменений. Кодировка в базе UTF-8. КАК мне Подключиться с правильной кодировкой, или как раскодировать получаемые данные без сопоставления каждому символу, раскодированного символа? |
|||
2
Живой Ископаемый
10.11.15
✎
10:36
|
Журнал регистрации на sqlite
(49) пост |
|||
3
assest
10.11.15
✎
10:41
|
(49) Мой коллега сказал, что это похоже на "вырывание гланд через ж**у бор-машиной с приминением автогена"(с)
У меня 75 тысяч таких строк, можно как - нибудь не через винт? |
|||
4
Живой Ископаемый
10.11.15
✎
10:42
|
2(3) да, помещать их все в один файл, и потом преобразовывать сразу, а не по-одной...
:) |
|||
5
assest
10.11.15
✎
10:45
|
Это таблица, я так понимаю надо собрать в строку, а потом разобрать ее (4) Так ты предлагаешь действовать?
|
|||
6
cw014
10.11.15
✎
10:45
|
Выполни запрос set charset utf 8
|
|||
7
assest
10.11.15
✎
10:46
|
(6) А можно синтаксис, как это будет выглядеть в 1С?
|
|||
8
cw014
10.11.15
✎
10:47
|
ADO.Execute('set charset utf 8');
Result = ADO.Execute('select * from mytable'); |
|||
9
assest
10.11.15
✎
10:51
|
(8)
ADOСоединение = Новый COMОбъект("ADODB.Connection"); ADOСоединение.Open("Provider=SQLOLEDB. |Persist Security Info=False; |User ID="+Пользователь+"; |Password="+ Пароль+"; |Initial Catalog="+ |Data Source="+ Сервер); Такое подключение? |
|||
10
cw014
10.11.15
✎
10:59
|
Driver={MySQL ODBC 5.1 Driver};
Server=***; Database=***; User=***; Password=***; Option=3; |
|||
11
assest
10.11.15
✎
11:09
|
(10) Что то он вернул, пытаюсь заглянуть во внутрь, может подскажешь как выгрузить результат в таблицу?
|
|||
12
assest
10.11.15
✎
11:29
|
Вот так заработало, все переведено в нужную кодировку
ADOСоединение = Новый COMОбъект("ADODB.Connection"); ADOСоединение.Open("Driver={MySQL ODBC 5.1 Driver}; |Server=192.168.1.112; |Database=parserbosch; |User=root; |Password=123; |Option=3;"); ADOСоединение.Execute("set charset utf8"); RS = ADOСоединение.Execute("select * from modification"); ТЗ=Новый ТаблицаЗначений; Для Каждого колонка Из ВнешниеИсточникиДанных.SQLБазаМоделей.Таблицы.modification.СоздатьОбъект().ПолучитьИзменяемыеПоля() Цикл ТЗ.Колонки.Добавить(Колонка); КонецЦикла; Пока RS.EOF() = 0 Цикл НС=ТЗ.Добавить(); Для Каждого Колонка Из ТЗ.Колонки Цикл НС[колонка.Имя] = RS.Fields(Колонка.Имя).Value; RS.MoveNext(); КонецЦикла;; Если ТЗ.Количество()>=77 Тогда Прервать; КонецЕсли; КонецЦикла; 1,7 секунды на подключение 1,3 на обработку 300 записей |
|||
13
assest
10.11.15
✎
11:29
|
Всем спасибо за помощь (10) (4)
|
|||
14
assest
10.11.15
✎
11:54
|
Народ подскажите, в чем проблема?
при таком коде половина данных не совпадает с данный в таблице куда я подключаюсь. все данные выглядят осмысленно |
|||
15
assest
10.11.15
✎
12:00
|
Нашел, надо было RS.MoveNext(); вынести из цикла
|
|||
16
Живой Ископаемый
10.11.15
✎
12:02
|
э... из внутреннего цикла. внутри внешнего - оставить...
|
|||
17
assest
10.11.15
✎
12:26
|
(16) Да это я и имел ввиду
|
|||
18
cw014
10.11.15
✎
12:39
|
(17) А зачем тебе вообще внешний источник данных?
|
|||
19
assest
10.11.15
✎
14:58
|
Я начинал подключаться через него, а теперь беру названия колонок
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |