Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 17.03.2024
Сообщений: 33

Поработать с Юникодом

16.06.2024, 00:52. Показов 1473. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется текстовик в формате Юникод. Нашел код который выводит через API нормально символы:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Option Explicit
Private Declare Function TextOut Lib "gdi32" Alias "TextOutW" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
 
 
 
Private Sub Form_Load()
   FontName = "Times New Roman" ' нужно установить шрифт, который бы поддерживал уникод
   ScaleMode = 3
   FontSize = 16
   AutoRedraw = True
   
   
 
Dim s As String, b() As Byte, f As Integer, ln As Long, h As Long, y As Long
Dim allStr() As String
 
f = FreeFile
Open App.Path & "\unicod.txt" For Binary As #f
   s = Space$(LOF(f) - 2)
   Get #f, 3, s 'два байта пропускаем, потому что это просто знак, что файл в уникоде
Close #f
 
 
 
's = StrConv(s, vbUnicode) уже не нужно, при чтении из файла само конвертируется
 
ReDim b(7)
b(0) = 13
b(4) = 10
'это таким хитрым скособом оказался записан перевод строки!
 
allStr = Split(s, b) ' делим весть текст на строки (текстаут отказался сам печатать переход строки)
 
h = TextHeight("X") + 1 ' высота одной строки
y = 10 '  начальный отступ сверху
 
For f = 0 To UBound(allStr)
  ln = Len(allStr(f)) \ 2
  TextOut hdc, 10, y, allStr(f), ln
  y = y + h
  
Next
   
End Sub
Я так понимаю вывести в какой-нибудь Текст или ЛистБокс без танцев с бубнами не получится тоже самое?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.06.2024, 00:52
Ответы с готовыми решениями:

Странности с юникодом
Всем доброго времени суток. Решил научиться писать C++-программы под кодировку Unicode и, так сказать, еще на берегу, столкнулся с хоть и...

Работа с юникодом
Добрый день. Подскажите пожалуйста. Мне надо заполнить знаковый массив знаками, не считая английского и русского лафавита, только знаками....

Разобраться с Юникодом
Моя программа: class Unicode { public static void main (String args) { System.out.println('\u0108'); } }

8
1385 / 840 / 91
Регистрация: 08.02.2017
Сообщений: 3,567
Записей в блоге: 1
16.06.2024, 05:29
Цитата Сообщение от Below Посмотреть сообщение
ReDim b(7)
b(0) = 13
b(4) = 10
'это таким хитрым скособом оказался записан перевод строки!
Это аналогично дополнительному преобразованию константы vbCrLf в Unicode (StrConv(vbCrLf, vbUnicode))
VB по умолчанию работает с юникодом, но текст, который нахдится за пределами, как буд-то бы должен быть в формате Ansi и при чтении файла в строковую переменную по умолчанию преобразуются в юникод. В вашем случае, поскольку текст уже в юникоде, то происходит дополнительное (не нужное) преобразование в юникод, при этом просто происходит "разбухание" символов с 2 до 4 байт. Нужно просто считывать текст из файла изначально в байтовый массив, при этом не происходит ни каких преобразований.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
16.06.2024, 12:42
Цитата Сообщение от Below Посмотреть сообщение
без танцев с бубнами не получится тоже самое?
Танцы с бубнами это обязательный ритуал)))

Добавлено через 2 минуты
Цитата Сообщение от Below Посмотреть сообщение
в формате Юникод
В UTF-16 LE или в UTF-8 кодировке?

Добавлено через 1 минуту
Как загрузить юникодный файл в программу описано у меня в статье Как правильно открыть TXT файл для чтения, например чтобы запихнуть в TextBox или просто загрузить в массив строк
0
1 / 1 / 0
Регистрация: 17.03.2024
Сообщений: 33
18.06.2024, 02:07  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
В UTF-16 LE или в UTF-8 кодировке?
Пробовал Юникод Wintxt и UTF-8 все равно при обычном чтении через Input или FSO - кракозябры.

Добавлено через 27 минут
Цитата Сообщение от testuser2 Посмотреть сообщение
Нужно просто считывать текст из файла изначально в байтовый массив, при этом не происходит ни каких преобразований.
Так там вроде и .

Visual Basic
1
Open App.Path & "\unicod.txt" For Binary As #f
0
1385 / 840 / 91
Регистрация: 08.02.2017
Сообщений: 3,567
Записей в блоге: 1
18.06.2024, 05:26
Цитата Сообщение от Below Посмотреть сообщение
Так там вроде и .
Visual Basic
1
Open App.Path & "\unicod.txt" For Binary As #f
А дальше надо
Visual Basic
1
2
3
   ReDim b(LOF(f) - 3) As Byte
   Get #f, 3, b 'считываем в байтовый массив
Close #f
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
18.06.2024, 13:25
Цитата Сообщение от Below Посмотреть сообщение
Open App.Path & "\unicod.txt" For Binary As #f
Это плохой код вообще. Не будет поддерживать юникодные имена файлов. Лучше всего API я же говорил и дал ссылку на тему где всё это описано.

Добавлено через 2 минуты
Цитата Сообщение от Below Посмотреть сообщение
Юникод Wintxt
Это что это такое вообще)))))))))
0
0 / 0 / 0
Регистрация: 17.03.2024
Сообщений: 25
10.05.2025, 16:00
А как в самом коде писать например на финском, кто-нибудь помнит? Выставляю в свойствах формы Font - набор символов(кодировка???), поддерживающий язык, при вставке из буфера выдает: ?????????

Это вообще возможно?
0
1385 / 840 / 91
Регистрация: 08.02.2017
Сообщений: 3,567
Записей в блоге: 1
10.05.2025, 18:49
Цитата Сообщение от Below2 Посмотреть сообщение
А как в самом коде писать например на финском, кто-нибудь помнит?
Вставил в код текст на финском, без проблем MsgBox выводит фразу. Контролы и формы на VB6 не поддерживают юникод, там могут быть траблы, но существую сторонние контролы, поддерживающие юникод.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
10.05.2025, 20:09
Below2, в Label можно из коробки. Для других контролов testuser2 уже написал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.05.2025, 20:09
Помогаю со студенческими работами здесь

Разобраться с Юникодом
Помогите написать программу, которая будет корректно отображать русские символы. не понимаю как использовать Юникод. Пытаюсь...

Разобраться с Юникодом
Помогите написать программу, которая будет корректно отображать русские символы. не понимаю как использовать Юникод. Пытаюсь...

Вывод с базы с юникодом
Здравствуйте. Вывожу с базы данных, Bié выводит как é, í выводит как í Кодировка стоит UTF-8, колонка имеет кодировку utf-8...

Вывод с базы с юникодом
Здравствуйте. Вывожу с базы данных, Bié выводит как é, í выводит как í Кодировка стоит UTF-8, колонка имеет кодировку utf-8...

Workbench отказывается работать с юникодом
Создаешь базу, указываешь кодировку UTF-8, а редактор запросов знай себе в однобайтной кодировке русский текст заносит. Даже непонятно в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru