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

делаю так:

Код: 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
03.09.2008, 11:12
    #35519754
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл txt
По-моему файл не прикрепился. пробую еще раз.
...
Рейтинг: 0 / 0
03.09.2008, 11:16
    #35519765
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл txt
> Автор: Настенька
> У меня есь файл, его здесь прилагаю. как мне правильно его открыть из приложения,
> чтобы кодировка была правильной и буквы отображались по русски.

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

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

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

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
03.09.2008, 11:55
    #35519887
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл txt
почитала про oemtochar, всё сделала как там, не помогло. пож-та, именно с моим файлом помогите, если вам не трудно. такое чувство, что там дело вовсе и не в кодировке.
...
Рейтинг: 0 / 0
03.09.2008, 12:01
    #35519913
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл txt
почитала про oemtochar, всё сделала как там, не помогло. пож-та, именно с моим файлом помогите, если вам не трудно. такое чувство, что там дело вовсе и не в кодировке.
...
Рейтинг: 0 / 0
03.09.2008, 14:52
    #35520460
SoftParanoik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл txt
У тебя текст в кодировке 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
04.09.2008, 05:02
    #35521530
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл txt
SoftParanoik, огромное спасибо. это помогло. просто интересно, а через fso или open for input
файл такого рода с правильной кодировкой не открыть?
...
Рейтинг: 0 / 0
04.09.2008, 08:16
    #35521582
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл txt
можно, но придется использовать ф-ции API
MultyByteToWideChar WideCharToMultiByte

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
04.09.2008, 10:56
    #35521822
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл txt
> Автор: 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
04.09.2008, 15:45
    #35522831
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл txt
Игорь Горбонос
использовали не ту ф-цию (точнее обратную нужной)

Код: 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
04.09.2008, 16:04
    #35522889
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл txt
HandKot

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

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

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


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