Как работать с кодировками?

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

Как работать с кодировками?

Сообщение AndreyG » 22.11.2005 (Вт) 12:37

Следующая проблема: подключился к dbf файлу от 1С, из рекордсета возвращается строка в следующем виде "╤рыЇхЄъш ъюёьхЄшўхёъшх 40 °Є". Как изменить кодировку или что можна сделать чтоб эта строка была читаемой?

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 22.11.2005 (Вт) 12:52

на vb
в модуле :
Код: Выделить всё
Public Function DosToWin(DosText As String) As String
   Dim i As Long
   Dim WinString As String
   Dim DosString As String
   
   WinString = Space(Len(DosText))
   DosString = DosText
   i = CharToOem(DosString, WinString)
   
   DosToWin = WinString
End Function


использование :
Код: Выделить всё
MsgBox DosToWin("Tðû¯õªúø úþ¸üõªø¢õ¸úøõ 40 °ª")


результат: Tалфетки косметические 40 шт

можно непосредственно из фокса - функция cpconv(string,codepage)
codepage - 1251
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

AndreyG
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.08.2005 (Чт) 20:40

Сообщение AndreyG » 22.11.2005 (Вт) 13:01

А как быть с функцией CharToOem? VB не знает такой функции.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 22.11.2005 (Вт) 13:08

AndreyG писал(а):А как быть с функцией CharToOem? VB не знает такой функции.

См. API Text Viewer
Лучший способ понять что-то самому — объяснить это другому.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 22.11.2005 (Вт) 13:12

Public Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszScr As String, ByVal lpszDst As String)
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

AndreyG
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.08.2005 (Чт) 20:40

Сообщение AndreyG » 22.11.2005 (Вт) 13:14

Большое спасибо, работает.

AndreyG
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.08.2005 (Чт) 20:40

Сообщение AndreyG » 22.11.2005 (Вт) 13:30

Ещо небольшой ньюансик. Оно немного не точно перекодирует. Как это дело можно исправить?

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

Сообщение alibek » 22.11.2005 (Вт) 13:38

Написать свой перекодировщик.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение Andrey Fedorov » 22.11.2005 (Вт) 13:54

AndreyG писал(а):А как быть с функцией CharToOem? VB не знает такой функции.


А нафиг этот мазохизм нужен?

Идем, к примеру, сюда http://inform.p-stone.ru/libr/db/teoretic/data/public1/ и смотрим что означает 29-ый байт заголовка DBF-файла. Сравниваем с тем что у нас имеется. При необходимости исправляем. Все.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение alibek » 22.11.2005 (Вт) 13:59

Иногда это невозможно. Например, если база лежит на CD или на сетевом ресурсе с доступом только на чтение.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение Andrey Fedorov » 22.11.2005 (Вт) 14:05

alibek писал(а):Иногда это невозможно. Например, если база лежит на CD или на сетевом ресурсе с доступом только на чтение.


Иногда. Но в большинстве случаев все-же возможно. И, с того-же CD базу всегда можно скопировать на локаль (сам же так советовал!) - оно в итоге и быстрее будет...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение alibek » 22.11.2005 (Вт) 14:11

У меня было такое однажды, надо было справочник (КЛАДР) импортировать.
Копировать локально -- он весит дофига.
Я до того дошел, что начал класс писать, который бы умел примитивно работать в DBF.
Lasciate ogni speranza, voi ch'entrate.


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

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

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

    TopList