MyTetra Share
Делитесь знаниями!
В кодировке UTF8 можно читать программно текстовый файл?
Время создания: 31.07.2019 22:37
Текстовые метки: кодировки
Раздел: Разные закладки - VBA
Запись: xintrea/mytetra_db_adgaver_new/master/base/1520589463d1da828o85/text.html на raw.githubusercontent.com

Вопрос:


Здравствуйте, щас пользуюсь кодом



Sub ReadTextFileLine()

Dim a As String

Open ("w:\new 2222.txt") For Input As #1

Do Until EOF(1)

Line Input #1, a

MsgBox$ a

Loop

Close #1

End Sub



Пока кракозябры выдаёт месседж в кодировке UTF8, если читать в кодировке ANSI текстовый файл тогда всё ОК, но нужно в кодировке UTF8, как? Спасибо.



Ответы:


Тема тут была, и даже недавно вроде опять поднималась. Тут или в MSOffice.

Нашёл у экселистов, завтра попробую.


А вот функция для чтения текстового файла в заданной кодировке:



Function LoadTextFromTextFile(ByVal filename$, Optional ByVal encoding$) As String

' функция загружает текст в кодировке Charset$ из файла filename$

On Error Resume Next: Dim txt$

If Trim(encoding$) = "" Then encoding$ = "windows-1251"

With CreateObject("ADODB.Stream")

.Type = 2:

If Len(encoding$) Then .Charset = encoding$

.Open

.LoadFromFile filename$ ' загружаем данные из файла

LoadTextFromTextFile = .ReadText ' считываем текст файла

.Close

End With

End Function



это мне писать вместо

If Trim(encoding$) = "" Then encoding$ = "windows-1251"


писать


If Trim(encoding$) = "" Then encoding$ = "utf-8"


???

Это от тебя зависит

Совет - как обычно - включить мозг, а не тупо копипастить



Option Explicit

Sub ReadTextFileLine()

Dim objStream, myTXT, a, Количество_строк, li

Set objStream = CreateObject("ADODB.Stream")

objStream.Charset = "utf-8"

objStream.Open

objStream.LoadFromFile ("w:\в UTF8.txt")

myTXT = objStream.ReadText()

a = Split(myTXT, vbCrLf)

'Количество_строк = UBound(a) - LBound(a)

'MsgBox$ Количество_строк

'MsgBox$ UBound(a)

'MsgBox$ LBound(a)

'считает от нуля!!!!!

For li = LBound(a) To UBound(a)

MsgBox$ li & vbCrLf & a(li)

Next li

End Sub



Почему, то знак ┌ не читает, а знак ┐читает?

Это такие знаки в текстовых файлах, которыми таблицы рисуют


То есть знак левый служащий отображением верхнего левого угла таблицы НЕ читает, а служащий правым верхним углом таблицы читает, почему?


Пример файла выложи - самостоятельно делать лениво, а попробовать не на чем...



Akina, приаттачил

Мсгбокс значит не отображает, потому как если изменить цикл на



For li = LBound(a) To UBound(a)

MsgBox$ Len(a(li))

MsgBox$ li & vbCrLf & a(li)

Selection.TypeText Text:=a(li)

Next li



то в файле всё правильно отображает



Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования