MyTetra Share
Делитесь знаниями!
в кодировке UTF8 можно читать программно текстовый файл? [new]
16.03.2019
23:43
Раздел: !Закладки - VBA - Разобрать
в кодировке UTF8 можно читать программно текстовый файл?  [new]
катастрофа
Member

Откуда:
Сообщений: 2986
здравствуйте, щас пользуюсь кодом

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, как? спасибо
14 май 16, 23:32    [19174174]     Ответить | Цитировать Сообщить модератору
 Re: в кодировке UTF8 можно читать программно текстовый файл?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 17836
Эндрю, ищи - да обрящешь.
Тема тут была, и даже недавно вроде опять поднималась. Тут или в MSOffice.
15 май 16, 00:29    [19174445]     Ответить | Цитировать Сообщить модератору
 Re: в кодировке UTF8 можно читать программно текстовый файл?  [new]
катастрофа
Member

Откуда:
Сообщений: 2986
Shocker.Pro,
нашёл у экселистов, завтра попробую
А вот функция для чтения текстового файла в заданной кодировке:

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"




???
16 май 16, 20:55    [19180683]     Ответить | Цитировать Сообщить модератору
 Re: в кодировке UTF8 можно читать программно текстовый файл?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 17836
это от тебя зависит
совет - как обычно - включить мозг, а не тупо копипастить
16 май 16, 21:26    [19180781]     Ответить | Цитировать Сообщить модератору
 Re: в кодировке UTF8 можно читать программно текстовый файл?  [new]
катастрофа
Member

Откуда:
Сообщений: 2986
Shocker.Pro,

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




почему, то знак ┌ не читает, а знак ┐читает?
это такие знаки в текстовых файлах, которыми таблицы рисуют
17 май 16, 10:29    [19182226]     Ответить | Цитировать Сообщить модератору
 Re: в кодировке UTF8 можно читать программно текстовый файл?  [new]
катастрофа
Member

Откуда:
Сообщений: 2986
то есть знак левый служащий отображением верхнего левого угла таблицы НЕ читает, а служащий правым верхним углом таблицы читает, почему?
17 май 16, 11:23    [19182550]     Ответить | Цитировать Сообщить модератору
 Re: в кодировке UTF8 можно читать программно текстовый файл?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 16811
Пример файла выложи - самостоятельно делать лениво, а попробовать не на чем...
17 май 16, 11:43    [19182717]     Ответить | Цитировать Сообщить модератору
 Re: в кодировке UTF8 можно читать программно текстовый файл?  [new]
катастрофа
Member

Откуда:
Сообщений: 2986
Akina, приаттачил

К сообщению приложен файл (в UTF8.txt - 20bytes) cкачать
17 май 16, 11:50    [19182785]     Ответить | Цитировать Сообщить модератору
 Re: в кодировке UTF8 можно читать программно текстовый файл?  [new]
катастрофа
Member

Откуда:
Сообщений: 2986
мсгбокс значит не отображает, потому как если изменить цикл на

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

MsgBox$ Len(a(li))

MsgBox$ li & vbCrLf & a(li)

Selection.TypeText Text:=a(li)

Next li




то в файле всё правильно отображает
17 май 16, 12:31    [19183041]     Ответить | Цитировать Сообщить модератору
 Re: в кодировке UTF8 можно читать программно текстовый файл?  [new]
катастрофа
Member

Откуда:
Сообщений: 2986
а скажите, если читать текстовый файл
AscW(любой_знак) всегда будет = 9474
Asc(любой_знак) всегда будет = 166
???
17 май 16, 14:43    [19184054]     Ответить | Цитировать Сообщить модератору

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