Как изменить кодировку символов в dbf с dos на win?

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
All.exe
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 19.07.2003 (Сб) 18:15

Как изменить кодировку символов в dbf с dos на win?

Сообщение All.exe » 19.07.2003 (Сб) 19:57

... есть табличка dbf с которой надо поработать, но при отображении её в DataGrid русский текст превращается в абракадабру.
при просмотре файла в FARе проблема решается легко - F8, а как в VB6 программно поменять кодировку символов таблицы на win-1251 ?

Gfyxer
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 17.03.2002 (Вс) 6:51

Сообщение Gfyxer » 07.08.2003 (Чт) 12:25

для DataGrid не пробовал, а текстовом поле это так:

'======
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As String, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As String, ByVal cchWideChar As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
Const MB_PRECOMPOSED = &H1 ' use precomposed chars
Public Function Convert(ByVal strSrc As String, ByVal nFromCP As Long, ByVal nToCP As Long) As String
'Convert(Text1.Text, 866, 1251) 'dos- >win
'Convert(Text1.Text, 1251, 866) 'win- >dos
'Convert(Text1.Text, 28595, 1251) 'iso->win
'Convert(Text1.Text, 1251, 28595) 'win->iso
'Convert(Text1.Text, 20866, 1251) 'koi8r->win
'Convert(Text1.Text, 1251, 20866) 'win->koi8r
Dim nLen As Long
Dim strDst As String
Dim strRet As String
Dim nRet As Long
nLen = Len(strSrc)
strDst = String(nLen * 2, Chr(0))
strRet = String(nLen * 2, Chr(0))
nRet = MultiByteToWideChar(nFromCP, MB_PRECOMPOSED, strSrc, nLen, strDst, nLen)
nRet = WideCharToMultiByte(nToCP, 0, strDst, nRet, strRet, nLen * 2, ByVal 0, 0)
Convert = Left(strRet, nRet)
End Function
'=======

Попробуй может будет работать и в DataGrid...


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 139

    TopList