Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Visual Basic: Общие вопросы > Отображение UTF-8 в TextBox


Автор: salieri 31.05.19, 10:09
Здравствуйте! Есть TXT-файл с диакритическими знаками в UTF-8, при попытке вывести их в TextBox, появляются знаки вопроса. Пробовал Ричтекстбокс, тоже самое.
Полночи просидел в интернете, пытался найти решение, так толком не нашёл ничего.
Подскажите, пожалуйста, как быть.

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Dim barBuffer() As Byte
    Dim sarLines() As String
     
    Dim lngCounter As Long
     
    Dim strText As String
     
    Open App.Path & "\msg.txt" For Binary Access Read As #1
     
    ReDim barBuffer(FileLen(App.Path & "\msg.txt") - 1)
    Get #1, , barBuffer
    Close #1
     
    If (barBuffer(0) = &HEF And barBuffer(1) = &HBB And barBuffer(2) = &HBF) Then
    strText = Mid(barBuffer, 3)
    Else
    strText = barBuffer
    End If
     
    sarLines = Split(strText, vbNewLine)
     
    For lngCounter = LBound(sarLines) To UBound(sarLines)
    barBuffer = sarLines(lngCounter) & vbNewLine
    txtmsg.Text = barBuffer
    Next lngCounter

Автор: salieri 31.05.19, 15:29
Ребят, мне тут подсказали такую вещь: "Проблема в том,что VB делает двойное преобразование кодировки.Первая зависит от системных настроек,а вторая в свою. Где-то читал уже точно не помню.Выход предлагался: записывать из буфера в массив,тогда таких преобразований не происходит.Я не проверял, по этому ничего не скажу."

Что скажете по этому поводу?

Добавлено
Ещё есть такой вариант рабочий (проверял!):

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    RichTextBox.LoadFile App.Path & "\msg.txt"


но у RichTextBox не настраивается цвет шрифта, поэтому этот метод не совсем хорош.

Автор: salieri 31.05.19, 18:23
Дали ссылку на юникод-аналоги контролов: http://www.vbforums.com/showthread.php?698...ommon-controls)

без бутылки не компилируется их проект
надо разбираться, что там ему не хватает

Автор: Alexanbar 05.06.19, 16:10
Выход - только в использовании контролов, поддерживающих юникод.

можно попробовать использовать веб-браузер контрол или dhtmledit

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)