Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
Mr.WhoI
-
- Начинающий
-
-
- Сообщения: 8
- Зарегистрирован: 15.02.2005 (Вт) 8:08
Mr.WhoI » 24.02.2005 (Чт) 16:10
Есть текст в UTF8 формате или кодировке? Кстати - UTF8 - это же кодировка в моем понимании или я не прав.
Так вот мне надо создать файл, в котором содержалась бы та же инфа что и в первом файле, но в другой кодировке.
Вопрос - какие опреторы или функции есть в VB6.0 для этого или какие-либо другие средства?
-
tyomitch
-
- Пользователь #1352
-
-
- Сообщения: 12822
- Зарегистрирован: 20.10.2002 (Вс) 17:02
- Откуда: חיפה
tyomitch » 24.02.2005 (Чт) 16:13
UTF8 считается кодировкой, но имхо всё же формат (Unicode Transformation Format).
Средства для этого есть в API: WideCharToMultiByte и MultiByteToWideChar.
-
alibek
-
- Большой Человек
-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 24.02.2005 (Чт) 16:14
Дополню. Ее особенность в том, что символы, представляемые ею, могут использовать переменное число байт.
Lasciate ogni speranza, voi ch'entrate.
-
tyomitch
-
- Пользователь #1352
-
-
- Сообщения: 12822
- Зарегистрирован: 20.10.2002 (Вс) 17:02
- Откуда: חיפה
tyomitch » 24.02.2005 (Чт) 18:12
Btw, в UTF16 тоже (необщеизвестный факт
)
-
Inferno
-
- Продвинутый пользователь
-
-
- Сообщения: 179
- Зарегистрирован: 26.01.2005 (Ср) 1:06
Inferno » 24.02.2005 (Чт) 19:32
вот линк, правда на пхп, но думаю что разобратся будет не трудно.
-
Mr.WhoI
-
- Начинающий
-
-
- Сообщения: 8
- Зарегистрирован: 15.02.2005 (Вт) 8:08
Mr.WhoI » 25.02.2005 (Пт) 9:47
tyomitch писал(а):UTF8 считается кодировкой, но имхо всё же формат (Unicode Transformation Format).
А в чем принципиальное отличие?
Последний раз редактировалось
Mr.WhoI 25.02.2005 (Пт) 10:00, всего редактировалось 1 раз.
-
Mr.WhoI
-
- Начинающий
-
-
- Сообщения: 8
- Зарегистрирован: 15.02.2005 (Вт) 8:08
Mr.WhoI » 25.02.2005 (Пт) 9:59
Inferno писал(а):вот линк, правда на пхп, но думаю что разобратся будет не трудно.
А где линк?
-
tyomitch
-
- Пользователь #1352
-
-
- Сообщения: 12822
- Зарегистрирован: 20.10.2002 (Вс) 17:02
- Откуда: חיפה
tyomitch » 25.02.2005 (Пт) 12:49
Mr.WhoI писал(а):tyomitch писал(а):UTF8 считается кодировкой, но имхо всё же формат (Unicode Transformation Format).
А в чем принципиальное отличие?
В отличие от "нормальных" кодировок, UTF8 a) имеет переменную длину; б) содержит одинаковые символы.
-
Oberon
-
- Начинающий
-
-
- Сообщения: 12
- Зарегистрирован: 03.10.2004 (Вс) 17:00
Oberon » 19.03.2005 (Сб) 14:57
Тот же самый сабж.
Всё тот же хмл с кириллицей.Может хто пример с WideCharToMultiByte подкинуть,а то мучаюсь уже второй день.
Заранее спасибо
-
Inferno
-
- Продвинутый пользователь
-
-
- Сообщения: 179
- Зарегистрирован: 26.01.2005 (Ср) 1:06
Inferno » 20.03.2005 (Вс) 23:52
- Код: Выделить всё
' APIs
Private Declare Function LocalAlloc Lib "kernel32.dll" (ByVal wFlags As Long, ByVal wBytes As Long) As Long
Private Declare Function LocalFree Lib "kernel32.dll" (ByVal hMem As Long) As Long
Private Declare Function MultiByteToWideChar Lib "kernel32.dll" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32.dll" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
' Constants
Private Const CP_UTF8 As Long = 65001
Private Const LMEM_ZEROINIT As Long = &H40
'--------------------------------------------------------------------------------
' Проект : OfflineClient
' Процедура : WinToUTF8
' Описание : Перевод строки в UTF8 кодировку
' Кем создан : SNE
' Дата-Время : 09.11.2004-11:52:01
'
' Параметры : inString - Строка, в win кодировке
' lMaxSize - Максимальный размер строки
'--------------------------------------------------------------------------------
Private Function WinToUTF8(ByRef inString As String, _
ByVal lMaxSize As Long) As String
Dim hMemLock1 As Long, hMemLock2 As Long
Dim iStrSize As Long
hMemLock1 = LocalAlloc(LMEM_ZEROINIT, lMaxSize)
hMemLock2 = LocalAlloc(LMEM_ZEROINIT, lMaxSize)
iStrSize = MultiByteToWideChar(0&, 0&, inString, &HFFFF, hMemLock1, lMaxSize)
iStrSize = WideCharToMultiByte(65001, 0&, hMemLock1, iStrSize, hMemLock2, lMaxSize, 0&, 0&) ' CP_UTF8
If Len(iStrSize) Then
WinToUTF8 = String$(iStrSize, 0&)
Call CopyMemory(ByVal WinToUTF8, ByVal hMemLock2, iStrSize)
End If
Call LocalFree(hMemLock1)
Call LocalFree(hMemLock2)
End Function
'--------------------------------------------------------------------------------
' Проект : OfflineClient
' Процедура : UTF8ToWin
' Описание : Перевод UTF8 строки в WIN кодировку
' Кем создан : SNE
' Дата-Время : 09.11.2004-11:56:58
'
' Параметры : inString - Строка в utf8 кодировке
' lMaxSize - Максимальный размер строки
'--------------------------------------------------------------------------------
Private Function UTF8ToWin(ByRef inString As String, _
ByVal lMaxSize As Long) As String
Dim hMemLock1 As Long, hMemLock2 As Long
Dim iStrSize As Long
hMemLock1 = LocalAlloc(LMEM_ZEROINIT, lMaxSize)
hMemLock2 = LocalAlloc(LMEM_ZEROINIT, lMaxSize)
iStrSize = MultiByteToWideChar(CP_UTF8, 0&, inString, &HFFFF, hMemLock1, lMaxSize)
iStrSize = WideCharToMultiByte(0&, 0&, hMemLock1, &HFFFF, hMemLock2, iStrSize, 0&, 0&)
If Len(iStrSize) Then
UTF8ToWin = String$(iStrSize, 0&)
Call CopyMemory(ByVal UTF8ToWin, ByVal hMemLock2, iStrSize)
End If
Call LocalFree(hMemLock1)
Call LocalFree(hMemLock2)
End Function
Честно признаюсь, что добро не мое
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: Majestic-12 [Bot], SemrushBot, Yandex-бот и гости: 109