Кодировка>OEM to ANSII

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
tiko
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 17.10.2005 (Пн) 15:21

Кодировка>OEM to ANSII

Сообщение tiko » 20.12.2005 (Вт) 16:16

Возможно ли поменять кодировку
Dos на Win для вывода значения через запрос в бд типа dbf (dBase,FoxPro)
через контрол Grid выводит символы в кодировке dos, нужно поменять на win для нормального отображения строковых значений
или хотя бы в состоянии recordset поменять кодировку и только потом выводить пользователю
Спасибо !

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 20.12.2005 (Вт) 16:22

Вручную конверти этими функциями:

Код: Выделить всё
Private Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Изображение

tiko
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 17.10.2005 (Пн) 15:21

Сообщение tiko » 21.12.2005 (Ср) 7:38

Попробовал так не возвращает null

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

Private Sub Command1_Click()
Dim strOEM As String
Dim strWin As String

strOEM = "+T= ò ¢ð¸ªø LL+¦T"

OemToChar strOEM, strWin

Debug.Print strWin
End Sub

в чем ошибка?
Спасибо

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.12.2005 (Ср) 8:33

Добавь strWin = Space$(Len(strOEM)) перед использованием функции.
А лучше, выставь в DBF-файле кодовую страницу, тогда строки сразу будут возвращаться в нормальном виде.
Lasciate ogni speranza, voi ch'entrate.

tiko
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 17.10.2005 (Пн) 15:21

Сообщение tiko » 21.12.2005 (Ср) 9:00

сапсибо за ответ alibek


Код: Выделить всё
Dim strOEM As String
Dim strWin As String

strOEM = "Tчэюё т ¦L¦ эр эръюяшЄхы№эє¦ ўрёЄ№ яхэёшш"

strWin = Space$(Len(strOEM))
CharToOem strOEM, strWin

Debug.Print strWin

поменял CharToOem
оригиал_дос="Tчэюё т ¦L¦ эр эръюяшЄхы№эє¦ ўрёЄ№ яхэёшш"
оригинал="Взнос в ПФР на накопительную часть пенсии"
возврат="Тзнос в iLi на накапительнуi часть пенсии"
не корректно выводит данные

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

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.12.2005 (Ср) 9:18

Открой файл в FoxPro, он предложит выбрать кодовую страницу. Укажи кодовую страницу CP866.
Это же можно сделать программно, кодовая страница указывается (если память не подводит) в 56 байте DBF-файла. Структуру DBF можно найти в интернете.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 21.12.2005 (Ср) 10:27

alibek писал(а):Открой файл в FoxPro, он предложит выбрать кодовую страницу. Укажи кодовую страницу CP866.
Это же можно сделать программно, кодовая страница указывается (если память не подводит) в 56 байте DBF-файла. Структуру DBF можно найти в интернете.


В 29-ом байте. FoxPro если и предложит выбрать кодовую страницу то только в том случае если она не установлена. Ручками проще выставить (тем более Fox не у всех есть).
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 87

    TopList