Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2013, 21:44   #11
Bagirli
Пользователь
 
Регистрация: 29.03.2008
Сообщений: 28
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
Очень странные данные в файле. Это на каком языке таковое? Может на вашей и нашей ПЭВМ таковой язык не установлен?
Это пробные данные из разных алфавитов (турецкий, арабский и т.д.).
Думаю от установки яэыка не зависит. Потому, что если этот файл импортируеш в Excel, Word или создаешь LinkTable в Access все нормально читается.

Последний раз редактировалось Bagirli; 25.09.2013 в 21:47.
Bagirli вне форума Ответить с цитированием
Старый 25.09.2013, 21:53   #12
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Вроде бы для поддержки многоязычности должно быть соответствующее ПО в Windows. Совсем неуверен, что язык умолчания в Delphi такое позволяет. Попробуйте переключить кодовую страницу шрифта
ReportCube вне форума Ответить с цитированием
Старый 25.09.2013, 21:56   #13
Bagirli
Пользователь
 
Регистрация: 29.03.2008
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Возможно, в ini-файле вместо 65001 стоит писать "UTF-8" (словами, без кавычек, через дефис).
Пробовал. ODBC выдает ощибку "Reserved error (-5402)"

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
"Язык для программ, не использующих Юникод" в системе по умолчанию какой стоит -- русский или турецкий? Для русского результат странный.
Одна и та же ситуация

Последний раз редактировалось Bagirli; 25.09.2013 в 22:04.
Bagirli вне форума Ответить с цитированием
Старый 25.09.2013, 22:13   #14
Bagirli
Пользователь
 
Регистрация: 29.03.2008
Сообщений: 28
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
Вроде бы для поддержки многоязычности должно быть соответствующее ПО в Windows. Совсем неуверен, что язык умолчания в Delphi такое позволяет.
Delphi такие символы нормально показывает из Access или Excel файлов.
Думаю ODBC Text Driver виноват.
Цитата:
Сообщение от ReportCube Посмотреть сообщение
Попробуйте переключить кодовую страницу шрифта
Можно подробнее?
Bagirli вне форума Ответить с цитированием
Старый 25.09.2013, 22:18   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуйте JET OLEDB, он тоже умеет текстовые файлы кушать. По памяти кажется так
Код:
Extended Properties="text;HDR=Yes;FMT=Delimited;CHARSET=utf8"
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 25.09.2013 в 22:26.
Аватар вне форума Ответить с цитированием
Старый 25.09.2013, 22:30   #16
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Попробовал с JET, UTF-8, CHARSET менял - бесполезно. Вставленный вручную русский - влёгкую. Что-то не то с набором кодовых страниц, похоже.
ReportCube вне форума Ответить с цитированием
Старый 25.09.2013, 23:00   #17
Bagirli
Пользователь
 
Регистрация: 29.03.2008
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Язык для программ, не использующих Юникод" в системе по умолчанию какой стоит -- русский или турецкий? Для русского результат странный.
Да, для русского результат другой. Это не свидителствует тому, что ODBC Text Driver это - программа, не поддерживаующий Юникод?

Может эта ссылка нам поможет?:
http://office.microsoft.com/en-us/ac...001032166.aspx

CharacterSet
An indicator of how text pages are stored. Possible settings are:
ANSI — The ANSI code page of the machine. AnsiToUnicode and UnicodeToAnsi conversions done.
OEM — — The OEM code page of the machine. OemToUnicode and UnicodeToOem conversions done.
Unicode — codepage conversions not done.
<decimal number> — The code page number of a specific character set. Conversions to and from Unicode will be done.
The default is ANSI.

Последний раз редактировалось Bagirli; 25.09.2013 в 23:04.
Bagirli вне форума Ответить с цитированием
Старый 25.09.2013, 23:11   #18
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Кодировка файла UTF-8 (UNICODE), BOM имеется, что для открытия плоских файлов как таблиц БД ни есть хорошо. Кодировка обычными редакторами видна и даже похожа на то, что должно быть. Указанная Вами кодовая страница в файле schema.ini верная. "Если всё сделал и не получается, то прочти, наконец, инструкцию". Просто у меня где-то в подкорке сидит - полная версия Windows со специальной поддержкой многих языков. У меня не полная - профессионал.
А у Вас там полная мешанина - турецкий, азербайджанский. Вряд ли таковое у Вас получится открыть так просто

Последний раз редактировалось ReportCube; 25.09.2013 в 23:17.
ReportCube вне форума Ответить с цитированием
Старый 26.09.2013, 00:01   #19
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

Цитата:
Сообщение от Bagirli Посмотреть сообщение
Это не свидителствует тому, что ODBC Text Driver это - программа, не поддерживаующий Юникод?
Скорее всего, да. Предлагаю плюнуть на это дело и написать собственную читалку CSV-файлов в какой-нибудь MemTableEh или что-то похожее. Я бы так и сделал.

Кстати, как вариант можно попробовать сохранить CSV в UTF-16, если в ini-файле стоит "Unicode".

Цитата:
Сообщение от ReportCube Посмотреть сообщение
А у Вас там полная мешанина - турецкий, азербайджанский. Вряд ли таковое у Вас получится открыть так просто
На самом деле всё нормально. Эта "мешанина" и называется "Юникод". Если в системе XP и старше стоит поддержка азиатских языков, больше ничего не нужно. В Windows 7 азиатчина вообще искаропки.

Последний раз редактировалось Vapaamies; 26.09.2013 в 00:04.
Vapaamies вне форума Ответить с цитированием
Старый 27.09.2013, 11:47   #20
Bagirli
Пользователь
 
Регистрация: 29.03.2008
Сообщений: 28
По умолчанию

Проблема решена.

ADOConnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;D ata Source=D:\TextFiles\;ExtendedProper ties="text;HDR=Yes;FMT=Delimited";P ersist Security Info=False';
ADOConnection.Provider := 'Microsoft.Jet.OLEDB.4.0';

"Schema.ini":
[Test.txt]
Format=TabDelimited
CharacterSet=65001
Col1=Kod INTEGER
Col2=Naim CHAR

Все буквы отображаются правильно. Даже тогда, если в строку добавляеш символы из разных альфавитов одновременно.
Выходит, что ODBC Text Driver не поддерживает, а Jet.OLEDB поддерживает Unicod.

Спасибо всем, кто участвовал в обсуждении!
Bagirli вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Microsoft Windows Driver Kit Assemblerru C++ Builder 6 22.07.2011 20:38
Access. ODBC driver. Трабл. Insightful Microsoft Office Access 1 08.02.2011 16:20
Нужен ODBC Driver for Progress nasfer БД в Delphi 0 24.01.2010 13:15
Ошибка ODBC Driver Manager komar73 БД в Delphi 1 03.04.2009 15:37
[Microsoft][Драйвер ODBC dBase] Дата содержит синтаксическую ошибку в выражении запроса '#FNAIM_SH' Jon_1981 БД в Delphi 1 11.06.2007 10:20