Страница: 1 |
Здравствуйте! Excel.ActiveWorkbook.ActiveSheet.Range("A1").Value = my_recordset.Fields("FIO") Таблица в .dbf файле заполнена в DOS кодировке. 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 Excel.ActiveWorkbook.ActiveSheet.Range("A1").Value = OEM2ANSI( my_recordset.Fields("FIO")) Пробовал функцией, написанной в ручную: dos->win, dos->koi8, dos->iso - бесполезно Подскажите в чем дело ??? (при записи в базу из ячейки Exel такая же беда)
dbf файлы поддерживают обе кодировки, информация о кодировке этом хранится в самом dbf-файле. Драйвер сам корректно преобразует кодировки в обе стороны. Возможно, ты неправильно указываешь драйвер, скажем, у тебя таблица foxpro, а драйвер указан dBase. Пробовал другие драйвера - не помагает. (dbf в win кодировке, а не в dos, как я написал раньше) Интересно то, что когда я сохраняю в базу русские символы (используя в строке подключения ConnectionString параметр CP=1251), то они попадают туда в dos кодировке, а не в виндовой, а читаются потом правильно! А те символы, что были в базе изначально в виндовой кодировке, превращаются при чтении в "кашу": СМОЛИНА соответствует T|+TL=L Видно, что перекодирование к win 1251 не может быть применено, т.к. коды повтаряются для разных символов Может проблемы у драйвера с виндовой кодировкой русского? Страница: 1 |
Вопрос: перекодировка ANSI/OEM
Добавлено: 02.03.04 13:04
Автор вопроса: Vorobey | ICQ: 135088009
У меня следующая проблема:
при записи в Exel-ячейку строки, полученной из .dbf файла (доступ к файлу осуществлялся через ODBC), русские символы отображаются неверно:
Пробовал использовать API функцию - не помогает:
Dim sANSI As String
sANSI = String(Len(sOEM), Chr(0))
OemToChar sOEM, sANSI
OEM2ANSI = sANSI
End Function
Ответы
Всего ответов: 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
Номер ответа: 3
Автор ответа:
Vorobey
ICQ: 135088009
Вопросов: 1
Ответов: 2
Профиль | | #3
Добавлено: 07.03.04 01:17