powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Открыть файл txt
11 сообщений из 11, страница 1 из 1
Открыть файл txt
    #35519740
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есь файл, его здесь прилагаю. как мне правильно его открыть из приложения, чтобы кодировка была правильной и буквы отображались по русски.

делаю так:

Код: plaintext
1.
2.
3.
4.
Dim fso, myfile
Set fso = CreateObject("Scripting.FileSystemObject")
Set myfile = fso.OpenTextFile("1.txt", ForReading)
stext = myfile.ReadAll
strarray() = Split(stext, vbCrLf)

потом в цикле пробегаю по строкам, но там где должен быть русский текст (слово Телеф.) отображаются кракозяблики. Заранее спасибо.
...
Рейтинг: 0 / 0
Открыть файл txt
    #35519754
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему файл не прикрепился. пробую еще раз.
...
Рейтинг: 0 / 0
Открыть файл txt
    #35519765
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Настенька
> У меня есь файл, его здесь прилагаю. как мне правильно его открыть из приложения,
> чтобы кодировка была правильной и буквы отображались по русски.

Почитай
здесь .

Да и можно было поискать ;)

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Открыть файл txt
    #35519887
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитала про oemtochar, всё сделала как там, не помогло. пож-та, именно с моим файлом помогите, если вам не трудно. такое чувство, что там дело вовсе и не в кодировке.
...
Рейтинг: 0 / 0
Открыть файл txt
    #35519913
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитала про oemtochar, всё сделала как там, не помогло. пож-та, именно с моим файлом помогите, если вам не трудно. такое чувство, что там дело вовсе и не в кодировке.
...
Рейтинг: 0 / 0
Открыть файл txt
    #35520460
SoftParanoik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя текст в кодировке UTF-8.
Попробуй так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Dim ADOStream

Set ADOStream = CreateObject("ADODB.Stream")

With ADOStream
     .Charset = "utf-8"
     .Mode =  3 
     .Type =  1 
     .Open
     .LoadFromFile "c:\1.txt"
     .Position =  0 
     .Type =  2 
     stext = .ReadText
     .Close
End With

strarray() = Split(stext, vbCrLf)
...
Рейтинг: 0 / 0
Открыть файл txt
    #35521530
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SoftParanoik, огромное спасибо. это помогло. просто интересно, а через fso или open for input
файл такого рода с правильной кодировкой не открыть?
...
Рейтинг: 0 / 0
Открыть файл txt
    #35521582
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно, но придется использовать ф-ции API
MultyByteToWideChar WideCharToMultiByte

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Открыть файл txt
    #35521822
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: HandKot
> можно, но придется использовать ф-ции API
> MultyByteToWideChar WideCharToMultiByte

У меня что-то не получилось:
Код: plaintext
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.
Option Explicit

Declare Function WideCharToMultiByte Lib "kernel32" _
                            (ByVal codepage As Long, _
                            ByVal dwFlags As Long, _
                            lpWideCharStr As Any, _
                            ByVal cchWideChar As Long, _
                            lpMultiByteStr As Any, _
                            ByVal cchMultiByte As Long, _
                            ByVal lpDefaultChar As String, _
                            ByVal lpUsedDefaultChar As Long) As Long
' CodePage
Public Const CP_ACP =  0         ' ANSI code page
Public Const CP_UTF8 =  65001 

Public Const WC_DISCARDNS& = &H10
Public Const WC_COMPOSITECHECK& = &H200
Public Const WC_SEPCHARS& = &H20

Sub Oem2()
Dim fso As Object, myfile As Object
Dim sRtn As String, sText As String
Dim strArray  As Variant
Dim i As Long
Set fso = CreateObject("Scripting.FileSystemObject")
Set myfile = fso.OpenTextFile("d:\1.txt",  1 )
sText = myfile.ReadAll

sRtn = String$(Len(sText),  0 )
Call WideCharToMultiByte(CP_ACP,  0 , ByVal StrPtr(sText), - 1 , ByVal sRtn, Len(sRtn),  0 ,  0 )

strArray = Split(sRtn, vbCrLf)
For i = LBound(strArray) To UBound(strArray)
    sRtn = String$(Len(strArray(i)) *  2 ,  0 )
    Call WideCharToMultiByte(CP_ACP,  0 , ByVal StrPtr(strArray(i)), - 1 , ByVal sRtn, 
Len(sRtn),  0 ,  0 )
    Debug.Print sRtn
Next i
End Sub


У самого метода OpenTextFile есть дополнительные параметры для преобразования текста из
юникода при открытии, то-же не помогают.

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Открыть файл txt
    #35522831
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
использовали не ту ф-цию (точнее обратную нужной)

Код: plaintext
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.
Option Explicit

Declare Function MultiByteToWideChar Lib "kernel32" _
                            (ByVal CodePage As Long, ByVal dwFlags As Long, _
                            ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, _
                            ByVal lpWideCharStr As String, ByVal cchWideChar As Long) As Long


' CodePage
Public Const CP_UTF8 =  65001 

Sub Convert()
    Dim fso As Object, myfile As Object
    Dim sRtn As String, sText As String
    Dim strArray  As Variant
    Dim i As Long
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set myfile = fso.OpenTextFile("e:\111\1.txt",  1 )
    sText = myfile.ReadAll

    'определяем буфер
    sRtn = String$(Len(sText) *  2 ,  0 )
    'конвертим
    i = MultiByteToWideChar(CP_UTF8,  0 , sText, Len(sText), sRtn, Len(sRtn))
    'еще одно преобразование
    sRtn = StrConv(sRtn, vbFromUnicode)

    'работаем с текстом
    strArray = Split(sRtn, vbCrLf)
    For i = LBound(strArray) To UBound(strArray)
        Debug.Print strArray(i)
    Next i
    
    Set myfile = Nothing
    Set fso = Nothing
End Sub



I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Открыть файл txt
    #35522889
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKot

Понял, был не прав :)
Спасибо

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Открыть файл txt
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]