Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: перекодировка ANSI/OEM Добавлено: 02.03.04 13:04  

Автор вопроса:  Vorobey | ICQ: 135088009 

Здравствуйте!
У меня следующая проблема:
при записи в Exel-ячейку строки, полученной из .dbf файла (доступ к файлу осуществлялся через ODBC), русские символы отображаются неверно:

Excel.ActiveWorkbook.ActiveSheet.Range("A1").Value = my_recordset.Fields("FIO")

Таблица в .dbf файле заполнена в DOS кодировке.
Пробовал использовать API функцию - не помогает:

Public Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long

Function OEM2ANSI(ByVal sOEM As String) As String
    Dim sANSI As String
    sANSI = String(Len(sOEM), Chr(0))
    OemToChar sOEM, sANSI
    OEM2ANSI = sANSI
End Function

Excel.ActiveWorkbook.ActiveSheet.Range("A1").Value = OEM2ANSI( my_recordset.Fields("FIO"))

Пробовал функцией, написанной в ручную: dos->win, dos->koi8, dos->iso - бесполезно

Подскажите в чем дело ???  (при записи в базу из ячейки Exel такая же беда)

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Vorobey



ICQ: 135088009 

Вопросов: 1
Ответов: 2
 Профиль | | #1 Добавлено: 04.03.04 10:30
Вероятно база открывается с неверной кодировкой, НО КАК ПРИ ОТКРЫТИИ БАЗЫ ЗАДАТЬ ВИД КОДИРОВКИ ? ? ?

Ответить

Номер ответа: 2
Автор ответа:
 crackoff



ICQ: 156165990 

Вопросов: 12
Ответов: 229
 Профиль | | #2 Добавлено: 04.03.04 13:32

dbf файлы поддерживают обе кодировки, информация о кодировке этом хранится в самом dbf-файле. Драйвер сам корректно преобразует кодировки в обе стороны. Возможно, ты неправильно указываешь драйвер, скажем, у тебя таблица foxpro, а драйвер указан dBase.

Ответить

Номер ответа: 3
Автор ответа:
 Vorobey



ICQ: 135088009 

Вопросов: 1
Ответов: 2
 Профиль | | #3 Добавлено: 07.03.04 01:17

Пробовал другие драйвера - не помагает. (dbf в win кодировке, а не в dos, как я написал раньше)

Интересно то, что когда я сохраняю в базу русские символы (используя в строке подключения ConnectionString параметр CP=1251), то они попадают туда в dos кодировке, а не в виндовой, а читаются потом правильно! А те символы, что были в базе изначально в виндовой кодировке, превращаются при чтении в "кашу":   

СМОЛИНА  соответствует  T|+TL=L

Видно, что перекодирование к win 1251 не может быть применено, т.к. коды повтаряются для разных символов

Может проблемы у драйвера с виндовой кодировкой русского?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам