Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Daemonu4 Гость
|
Добавлено: Чт Мар 04, 2010 9:24 pm Заголовок сообщения: Проблема с отражением украинских букв в DBF файле |
|
|
Ребята спасайте
Для месячной персонификации форируем таблици в DBF формате
путём импорта из акцента. Но вот только возникает проблема с отражение м букв і, ї получается вот так Натал?я.
Файл создавал и под FoxPro, Accessa менял кодировки всё без толку.
Кто сталкиваля подскажите, и кто не сталкивался тоже подскажите дельным советом. |
|
Вернуться к началу |
|
|
Daemonu4 Гость
|
Добавлено: Пт Мар 05, 2010 9:08 am Заголовок сообщения: |
|
|
Люди не партесь проблема решена |
|
Вернуться к началу |
|
|
olimp Site Admin
Зарегистрирован: 10.03.2005 Сообщения: 2661
|
Добавлено: Пт Мар 05, 2010 9:19 am Заголовок сообщения: |
|
|
Daemonu4 писал(а): | Люди не партесь проблема решена |
Поделись |
|
Вернуться к началу |
|
|
Daemonu4 Гость
|
Добавлено: Пт Мар 05, 2010 10:18 am Заголовок сообщения: |
|
|
Поделись[/quote]
Поспешил немного с проблемой решена.
Только на половину
В месячном бесте есть менюшка єкспорта DBF файла. Запускаем её и вэти файлы записываем данные. Всё как бы красиво получается Access стал видеть украинские букви.
Но есть большое НО при импорте в БЕСТ украинские буквы таво ?.
Так что проблева остаётся, продолжаем разговор. |
|
Вернуться к началу |
|
|
Kimmy
Зарегистрирован: 05.06.2006 Сообщения: 44
|
Добавлено: Пт Мар 05, 2010 1:15 pm Заголовок сообщения: |
|
|
А ХМЛ не спасает отца русской демократии ? |
|
Вернуться к началу |
|
|
AllexL
Зарегистрирован: 10.03.2005 Сообщения: 434 Откуда: Donetsk
|
Добавлено: Пт Мар 05, 2010 1:37 pm Заголовок сообщения: Re: Проблема с отражением украинских букв в DBF файле |
|
|
Daemonu4 писал(а): | Но вот только возникает проблема с отражение м букв і, ї получается вот так Натал?я.
|
Попробовать экспортировать в дбф (не обязательно персонификацию) из звита текст, содержащий букву i прочитать КОД_СИМВОЛА в VBS-е
Чуть не забыл - есть еще возможность экспорта в БЗ через COM-интерфейс. |
|
Вернуться к началу |
|
|
Юров Ю.С.
Зарегистрирован: 11.03.2005 Сообщения: 383 Откуда: Павлоград
|
Добавлено: Пт Мар 05, 2010 5:17 pm Заголовок сообщения: |
|
|
olimp писал(а): | Daemonu4 писал(а): | Люди не партесь проблема решена |
Поделись |
Для работы с файлами ДБФ предпочтительно использовать OLE DB Provider for Visual FoxPro. Он понимает различные кодировки, может создавать ДБФ файлы с заданными числовыми полями, но его нужно загрузить http://download.microsoft.com/download/b/f/b/bfbfa4b8-7f91-4649-8dab-9a6476360365/VFPOLEDBSetup.msi и установить. Строка соединения имеет вид:
Код: |
cn.Open "Provider=VFPOLEDB;" & _
"Extended Properties=FoxPro;" & _
"CodePage=1251;" & _
"Data Source="&fldNM&";" |
В штатном JET-драйвере по умолчанию установлена кодировка OEM. В этом состоянии он игнорирует команды установки кодовой страницы и всегда выполняет ANSI-OEM преобразование.
Признак кодовой страницы (29-й байт в файле DBF) JET-драйвер не понимает, длинные имена не поддерживает - но поведение xBase ISAM зависит от наличия BDE (Borland DataBase Engine) в системе.
Для записи ДБФ в формате ANSI гарантированно отключить автоматическое ANSI-OEM преобразование в драйвере можно только изменив значение ключа в реестре:
Код: | If ask("Для использования существующего драйвера необходимо установить в реестре кодовую страницу ANSI"&vbCrLf&_
"В редких случаях это может повлиять на правильность отображения символов кириллицы"&vbCrLf&_
"в данных, импортированных некоторыми другими программами, использующие обмен файлами DBF."&vbCrLf&_
"Сменить кодовую страницу драйвера?") Then _
CreateObject("WScript.Shell").RegWrite "HKLM\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase\DataCodePage", "ANSI" |
В кодировке OEM (CP866) нет украинских символов "ЇїЄєҐґІі", поэтому при штатном преобразовании ANSI-OEM происходит их замена на знаки вопроса. Для отправки в украинской ДОС-кодировке (RUSCII, она же CP-1125) помогает замена украинских букв специально подобранными символами. Для передачи в БЕСТ-ЗВИТ можно заменять украинские "i" английскими, он их исправляет.
Код: | 'этот алфавит правильно (кроме ї) преобразуется в OEM ISAMом.
Function CorrectUkrAnsi(str) ' предыскажение украинских символов в строке для перевода в RUSCII при ANSI-OEM преобразовании.
Dim ss : ss=Replace(str,Chr(175),Chr(176)) ',"I")'Ї 175=248
ss=Replace( ss,Chr(191),Chr(176)) ',"i")'ї 191=249 не ловится, поставили Ї
ss=Replace( ss,Chr(170),Chr(175)) ',"Э")'Є 170=244
ss=Replace( ss,Chr(186),Chr(191)) ',"э")'є 186=245 '
ss=Replace( ss,Chr(165),Chr(170)) ',"Г")'Ґ 165=242
ss=Replace( ss,Chr(180),Chr(186)) ',"г")'ґ 180=243
ss=Replace( ss,Chr(178),Chr(161)) ',"I")'І 178=246
ss=Replace( ss,Chr(179),Chr(162)) ',"i")'і 179=247
CorrectUkrAnsi=ss
End Function |
Последний раз редактировалось: Юров Ю.С. (Пт Мар 12, 2010 9:56 am), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
Daemonu4 Гость
|
Добавлено: Ср Мар 10, 2010 7:58 pm Заголовок сообщения: |
|
|
Благодаствуем Юров Ю.С. за большой выбор решений сложившейся проблемы. Пригодился последний вариант |
|
Вернуться к началу |
|
|
Юров Ю.С.
Зарегистрирован: 11.03.2005 Сообщения: 383 Откуда: Павлоград
|
Добавлено: Пт Мар 12, 2010 9:58 am Заголовок сообщения: |
|
|
Пожалуйста. Я подправил описательную часть, надеюсь что проблема и пути решения достаточно полно раскрыты. |
|
Вернуться к началу |
|
|
Sergio
Зарегистрирован: 05.01.2009 Сообщения: 18
|
Добавлено: Ср Апр 14, 2010 1:12 pm Заголовок сообщения: |
|
|
Похожая проблема, когда надо сделать импорт из клиент-банка. Получается что в поле примечание вместо всех букв знаки вопроса. В настройках клиент банка, кодировка для ДБФ файла стоит DOS866.
Как-то можно это решить? |
|
Вернуться к началу |
|
|
olimp Site Admin
Зарегистрирован: 10.03.2005 Сообщения: 2661
|
Добавлено: Ср Апр 14, 2010 6:56 pm Заголовок сообщения: |
|
|
Sergio писал(а): | Похожая проблема, когда надо сделать импорт из клиент-банка. Получается что в поле примечание вместо всех букв знаки вопроса. В настройках клиент банка, кодировка для ДБФ файла стоит DOS866.
Как-то можно это решить? |
Клиент - банк чей и какой версии ? |
|
Вернуться к началу |
|
|
Юров Ю.С.
Зарегистрирован: 11.03.2005 Сообщения: 383 Откуда: Павлоград
|
Добавлено: Ср Апр 14, 2010 8:15 pm Заголовок сообщения: |
|
|
Sergio писал(а): | ...вместо всех букв знаки вопроса... |
При ошибках преобразования OEM-ANSI печатаются кракозябры вместо русских (или украинских) букв.
А если вместо букв появляются знаки вопроса, то вероятнее всего из-за неверных настроек операционной системы происходит лишнее UNICODE-преобразование.
По-любому сперва нужно попробовать нейтрализовать появление вопросительных знаков:
Панель управления\Язык и региональные стандарты\Дополнительно\Язык программ, не поддерживающих Юникод - русский.
Панель управления\Язык и региональные стандарты\Региональные параметры\Языковые стандарты и форматы - русский.
Последний раз редактировалось: Юров Ю.С. (Ср Апр 14, 2010 9:11 pm), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
Sergio
Зарегистрирован: 05.01.2009 Сообщения: 18
|
Добавлено: Ср Апр 14, 2010 9:03 pm Заголовок сообщения: |
|
|
Клиент-банк УкрЕксим... версию точно не скажу...
Но проблема скорей в системе, чем в настройках самого клиент-банка, потому что на другом комп. грузится нормально... |
|
Вернуться к началу |
|
|
olimp Site Admin
Зарегистрирован: 10.03.2005 Сообщения: 2661
|
Добавлено: Чт Апр 15, 2010 7:33 am Заголовок сообщения: |
|
|
Sergio писал(а): | Клиент-банк УкрЕксим... версию точно не скажу...
Но проблема скорей в системе, чем в настройках самого клиент-банка, потому что на другом комп. грузится нормально... |
В смысле чьей разработки.
Последний клиент от Импакта позволяет в XML-настройках управлять строкой подключения к файлу с выпиской, что решает часть проблем с кодировкой.
Юров правильно сказал (см. выше). Вопросы - это проблема с Unicode |
|
Вернуться к началу |
|
|
Sergio
Зарегистрирован: 05.01.2009 Сообщения: 18
|
Добавлено: Чт Апр 15, 2010 10:29 am Заголовок сообщения: |
|
|
В диалоге клиент-банка:
19-Oct-2001
Copyright (c) 2000 by Impact Group Ltd.
Спасибо за рекомендации. Попробую. |
|
Вернуться к началу |
|
|
|