Форум: "Базы";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];
Внизdbf и Юникод Найти похожие ветки
← →
Fin © (2007-09-09 00:18) [0]Извените если вопрос не совсем по теме форума.
Проблема в следующем.
в dbf файл из 1с выгружены данные в текстовом формате в кодировке юникод.
После чего пытаюсь прочитать этот файл из своей программы и вместо текста считываю совершенно "испорченный" текст.
Понимаю что проблема с кодировкой, но не сталкивался с таким. Кто сталкивался с подобным, поделитесь опытом решения проблемы.
← →
Германн © (2007-09-09 01:21) [1]
> После чего пытаюсь прочитать этот файл из своей программы
А разве Д5 или Д6 когда-либо умели показывать юникод?
← →
Anatoly Podgoretsky © (2007-09-09 01:26) [2]> Германн (09.09.2007 01:21:01) [1]
Но dbf и не может хранить Юникод в текстовых полях, не расчитан.
← →
sniknik © (2007-09-09 01:28) [3]еще спросте, а умеет ли 1С выгружать в dbf в юникоде...
← →
Anatoly Podgoretsky © (2007-09-09 01:29) [4]> sniknik (09.09.2007 01:28:03) [3]
Конечно не умеет, но автор так считает.
← →
Германн © (2007-09-09 01:32) [5]
> Anatoly Podgoretsky © (09.09.07 01:29) [4]
Так автору сказали "спецы" из 1С :-)
← →
Fin © (2007-09-09 10:49) [6]да похоже с юникодом я погрячился, но всё же, текст прочесть не удаётся, пробывал в 1с выгруджать как oem или Ansi - ещё хуже получилось.
← →
Fin © (2007-09-09 11:09) [7]поправлюсь ещё хуже получилось только в oem.
немного поясню из 1с в частности выгружается символ русская "C" а при открытии в delphi вижу символ i.
При выгрузке в oem все текстовые русские символы превращаются в #
Да ещё в bde langdriver выставлен dBASE RUS cp866 .
← →
sniknik © (2007-09-09 12:29) [8]> все текстовые русские символы превращаются в #
бывает при неправильно выбранном langdriver-е либо неверной его работе (если он например решит ориентируясь на метку в файле что нужно менять символы для показа а на самом деле не нужно... т.е. при рассинхронизации кодировки и метки о ней)
выход собственно один из - подобрать langdriver, а если не поможет изменить метку в файле чтобы она соответствовала реальной кодировке записанного.
хотя можно еще по другому (3 вариант), сменить движок на такой который не обращает внимания на эти метки.
← →
Anatoly Podgoretsky © (2007-09-09 12:36) [9]> Fin (09.09.2007 10:49:06) [6]
Что такое dbf?
← →
Fin © (2007-09-09 19:46) [10]
> Anatoly Podgoretsky © (09.09.07 12:36) [9]
> > Fin (09.09.2007 10:49:06) [6]Что такое dbf?
вот почему навеяло что вопрос с сарказмом, но всё же, это формат файлов dBase.
← →
Anatoly Podgoretsky © (2007-09-09 19:52) [11]> Fin (09.09.2007 19:46:10) [10]
Раз это dBase то какой еще ansi (1251), dBase всех версий это не поддерживает, в отличии от ФоксПро, но тогда его уже не поддерживает БДЕ
← →
Fin © (2007-09-09 19:55) [12][8] спасибо, да видимо самое лучшее решение действительно сменить метку.
← →
Anatoly Podgoretsky © (2007-09-09 19:59) [13]"Метки" в файле различаются для dBase и FoxPro, для 866 они разные, а 1251 вообще не поддержан для dBase
← →
Anatoly Podgoretsky © (2007-09-09 20:00) [14]
> вот почему навеяло что вопрос с сарказмом
Что теперь скажешь о сарказме, после того как огласил что такое dbf?
← →
Fin © (2007-09-09 20:06) [15][11] Вы в этом смысле, прошу прощения.
Тогда точно утверждать не могу какой именно dbf хотя в документации написано "dBase III", при этом 1с при выгрузке позволяет задать режим кодировки базы. oem или Ansi. Или я что то путаю?
← →
sniknik © (2007-09-09 20:08) [16]> но всё же, это формат файлов dBase.
вряд ли. раз выгружено/создан файл в 1С то скорее всего это foxpro как "родной" ему (может там и можно сменить тип, но... ты бы наверное знал если бы устанавливал нестандартный).
> [8] спасибо, да видимо самое лучшее решение действительно сменить метку.
вот так сразу? а другой langdriver установить что даже не попробуешь? (я вообщето метку вторым рекомендовал если первое не поможет...)
← →
sniknik © (2007-09-09 20:11) [17]> хотя в документации написано "dBase III"
у него вообще нет меток кодовой страницы...
> Или я что то путаю?
как можно сказать если процесс "за кадром" и видится только результат(/интерпретация) притом изложенный не точно (юникод(!)).
← →
Fin © (2007-09-09 20:16) [18][16] насчёт смены langdriver, то я пробовал в bde поменять на другие не чего не вышло, да и к тому же есть куча других программ которые работают и как бы смена langdriver не повлияла на их работу, поэтому и вариант сос меной метки понравился больше всего.
← →
Anatoly Podgoretsky © (2007-09-09 20:16) [19]Вот теперь ты уже точнее сказал, что такое dbf
Тогда, dBase III вообще не поддерживает понятие язык таблицы и работает только с понятием машинная кодировка.
Поэтому вопрос oem или Ansi уже закономерный, обрабатывающая программа уже сама интерпритирует и обрабатывает символы.
← →
Anatoly Podgoretsky © (2007-09-09 20:20) [20]Насчет языкового драйвера, если машинная кодировка 1251, то используй ANSI ASCII - в этом случает будет использоваться текущая кодировка машины. Все будет регулироваться региональными установками и шрифтами.
Там тоже могут быть свои тонкости.
Например у полей есть свойство transliterate поосторожнее с ним.
Когда тебе задают уточняющий вопрос, то никто не хочет над тобой посмеяться, а только уточняю, поскольку dbf значит не больше чем dat или любое другое расширение.
← →
Anatoly Podgoretsky © (2007-09-09 20:22) [21]
> поэтому и вариант сос меной метки понравился больше всего.
Нечего менять в dBase III поскольку там нет никаких меток.
Попробуй перейти на АДО и провайдера OLE DB for FoxPro это наверно будет лучшем решением, поскольку большое сомнение, что 1С делает таблицы формата dBase III
← →
Fin © (2007-09-09 20:34) [22]Да через AdO всё нормально, только я использовал провайдер Provider=MSDASQL и при условии что в 1с формировал указав кодировку oem. В принципе вроде как вопрос решён, огромное спасибо.
P.S. жаль конечно что через bde не удалось :(
P.S.S. на счёт моих предположений на счёт dBase III они основаны на встроенной в 1cv8.1 справочной системы. вот маленькая цитата от туда
"Для работы с базами данных формата DBF (dBase III) в системе может использоваться специальный объект - XBase. Механизм работы с базами данных формата DBF предназначен для обеспечения возможности манипулирования ими непосредственно из встроенного языка 1С:Предприятия. Каждый объект XBase может быть связан с одним файлом базы данных."
Ещё раз спасибо.
← →
Anatoly Podgoretsky © (2007-09-09 20:40) [23]> Fin (09.09.2007 20:34:22) [22]
Это ты как раз использовал БДЕ в самом плохом варианте.
← →
sniknik © (2007-09-09 20:50) [24]> P.S. жаль конечно что через bde не удалось :(
чего жалеть? ты же даже не пытался.
чего стоит попробовать другой langdriver, и найдя подходящий не меняя настроек BDE указывать его в сессии(или в датавасе, не помню уже) у себя в программе.
> основаны на встроенной в 1cv8.1 справочной системы.
которая (эта часть) не менялась судя по всему со времен версии 6.0 (если не 5, может быть и такая была...)
но тем не менее, сам 1С 7.х работает с файлами foxpro(свою базу держит), а выгружаемые по заголовкам вроде не отличаются... т.е. можно предположить, что используется тот же движок (и правда зачем 2 примерно одинаковых вставлять?).
вот индексов для таких выгружаемых при обмене не видел никогда, был бы показатель поточнее.
← →
Fin © (2007-09-09 21:48) [25][24] пытался и даже получилось :) всё оказалось намного проще... хотя надо кое что проверить...
по поводу 1с тоже не берусь судить насчёт того что справочная система неменялась со старых времён, я просто прочитал как написано.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.052 c