Страница 1 из 1

Unicode в контролах VB6.0

Добавлено: 2009-02-22 15:32:51
S_V_S
Кто знает, посоветуйте!

Как вставить текст в кодировке Unicode в контрол VB?

Имеется файл source_unicode.txt, в котором содержится текст в кодировке Unicode.
Проблему считывания корректных символов в память VB я уже решил.
Убедился в том, что символы хранятся в памяти VB правильно.
Осталась проблема вывода этих символов на контрол формы VB6.0 (Listbox и Textbox).

Символов всего два: это a и o с умляутами.

На всякий случай приведу код, считывающий этот самый текст:

Код: Выделить всё

Dim S As String 
Dim F As Integer 
 
Private Sub Form_Load() 
 
S = LoadUnicodeFile(App.Path & "\source_unicode.txt", 1035) 
Text1.Text = S 
MsgBox AscW(Mid(Text1.Text, 1, 1)) 
MsgBox AscW(Mid(S, 1, 1)) 
 
End Sub 
 
Public Function LoadUnicodeFile(FileName As String, Optional LocaleID As Long = 1035) As String 
     
F = FreeFile 
Open FileName For Binary Access Read As F 
S = Space(LOF(F) - 2) 
Seek #F, 3 
Get #F, , S 
Close #F 
LoadUnicodeFile = StrConv(S, vbFromUnicode, LocaleID) 
     
End Function
Поставил в файле source_unicode.txt первым символом "а" с умляутом;
Первый Msgbox мне выдал "97" ("а"), а второй - "228" ("а" с умляутом)

То есть в памяти VB хранит как и надо, в Юникоде, а вот в Textbox вставляет простые буквы a и o, без умляутов, то есть преобразовывает их в ANSI.

Re: Unicode в контролах VB6.0

Добавлено: 2009-02-27 0:15:20
Alex Keda
венда - дело тёмное...

Re: Unicode в контролах VB6.0

Добавлено: 2009-03-01 22:28:52
zg
S_V_S писал(а):То есть в памяти VB хранит как и надо, в Юникоде, а вот в Textbox вставляет простые буквы a и o, без умляутов, то есть преобразовывает их в ANSI.
угу, так и есть, он их конвертит почём зря
S_V_S писал(а):Осталась проблема вывода этих символов на контрол формы VB6.0 (Listbox и Textbox).
в плане? чего нужно в итоге?