:: Visual Foxpro, Foxpro for DOS
ADODB.Connection Unicode
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Уважаемые форумчане !
Хочу прочитать excel таблицу и на выходе получить данные в формате UNICODE
В строке соединения для этого дописываю CharacterSet=UNICODE;
lcConStr = ;
'Provider=Microsoft.ACE.OLEDB.12.0;'+;
'Data Source='+m.lcDataSource+';'+;
'Extended Properties="Excel 12.0;CharacterSet=UNICODE;HDR=YES;IMEX=1";'
Однако рекции нет. ? oRs.Fields(0).value упорно возвращает символы ANSI
Может был у кого опыт чтения данных в другом формате (не ANSI) средствами ADODB.Connection ?
Или в схему залезать ? Спасибо


------------------
Незнание делает жизнь такой интересной.




Исправлено 1 раз(а). Последнее : dimuhametov, 17.03.18 13:02
Ratings: 0 negative/0 positive
Re: ADODB.Connection Unicode
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
COMPROP() - там даже пример есть, именно для ADO.
Более глобально - SYS(3101)

А почему не чтение средствами автоматизации самого экселя? Там такие же по сути настройки позволяют получать юникодные данные...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: ADODB.Connection Unicode
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Igor Korolyov
COMPROP() - там даже пример есть, именно для ADO.
Более глобально - SYS(3101)
Пробывал SYS(3101,65001),COMPROP(oRS,'UTF8',1) разные варианты и вариации - ничего не выходит.
В хелпе FOXPRO даже пример есть заточенный на это. Но результата 0.

Igor Korolyov
А почему не чтение средствами автоматизации самого экселя? Там такие же по сути настройки позволяют получать юникодные данные...
Мы ж легких путей не ищем ... Надо через ADO, не думал что такая мелочь заведет в тупик.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: ADODB.Connection Unicode
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
У меня нет конкретно этого 32-битного провайдера, ничем не помогу. Но с другими COM-ами проблем не было - всё переключалось и работало. Значит косяк именно в провайдере.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: ADODB.Connection Unicode
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Igor Korolyov
У меня нет конкретно этого 32-битного провайдера, ничем не помогу. Но с другими COM-ами проблем не было - всё переключалось и работало. Значит косяк именно в провайдере.
Переустановка мне ничем не помогла www.microsoft.com


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: ADODB.Connection Unicode
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
и в продолжение ...
вообщем получение символов в двубайтной кодировке получилось (через ADODB.Connection)
Для этого в качестве "Data Source" использовал Excel таблицу в формате XLSX.
Да еще строку RS2Cursor(oRS,m.tcCursorName) заменил на:
SYS(3101,65001)
RS2Cursor(oRS,m.tcCursorName)
SYS(3101,0)
Однако, появилась следующая проблема. Возвращаемая двубайтная кодировка очень непонятно.
К примеру кириллическая буква "м" возвращается как CHR(0xD0)+CHR(0x6F).
Хотя если использовать фокспрошный STRCONV('м',9), то получим CHR(0xD0)+CHR(0xBC)
Может кто в курсе, что это за вид возвращаемой кодировки от ADO? UTF8 ? UTF16 ? UTF32 ?
Что интересно многие кириллические символы обрабатываются правильно.
А некоторые как "м","o","д" через задний проход ... Спасибо


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: ADODB.Connection Unicode
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
65001 это UTF8 а отчего у тебя возвращается г*но - это одному БГ известно. Раз уж ты сам не знаешь - хотя с вашими казахскими "национализаторами" (в смысле kazwin и т.п.) влазящими своими грязными ногами в подсистему NLS (конвертации символов, поддержки разных алфавитов) винды, я совершенно не удивлён что в итоге что-то работает абы как.
Открой для начала свой xlsx (надеюсь это небольшой тестовый документ а не гигабайтная рабочая книга) как zip архив, найди внутри файлик xl\sharedStrings.xml и извлеки его наружу. Посмотри его в текстовом или XML редакторе понимающем utf-8 - на предмет искажены или нет там строки с твоими "плохими" символами. Потом в hex редакторе (можно фоксовом) посмотри этот же файлик - будет там на соответствующем месте D0BC, или нет.
Если там всё ок - ну можешь выложить содержимое ветки реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls
впрочем, там лишь имена файлов - т.е. ещё и сами nls файлы надо было бы сравнивать с эталонными - я не в курсе как там ваши казафикаторы работают - новые файлы подсовывают, или старые корёжат...

D06F вообще не является корректной UTF-8 последовательностью.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: ADODB.Connection Unicode
dimuhametov

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Игорь спасибо.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: ADODB.Connection Unicode
sphinx
Автор

Сообщений: 31179
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Igor Korolyov
это одному БГ известноэто одному БГ известно

Борису Гребенщикову?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 26 (Гостей: 26)

© 2000-2024 Fox Club 
Яндекс.Метрика