MyTetra Share
Делитесь знаниями!
Изменение кодировки текстового файла - VBA1
31.07.2019
22:37
Раздел: !Закладки - VBA

Изменение кодировки текстового файла - VBA

05.05.2017, 13:47. Просмотров 748. Ответов 12
Метки нет (Все метки)

здравствуйте, в своих записях имею пару кодов
для перекодировки файлов, а как сделать из ANSI > UTF 8? спасибо

Visual BasicВыделить код

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

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60



'

'преобразование текстового файла из 'windows-1251' в 'cp866'

'требуется ссылка на библиотеку Microsoft ActiveX Data Objects v2.5 или выше

Sub windows_1251_cp866()

 

    Dim inFile As String

    inFile = "C:\SmartIDReader\bin\output.txt"

 

    Dim outFile As String

    outFile = "C:\SmartIDReader\bin\1output.txt"

 

    Dim st As ADODB.Stream

    Set st = New ADODB.Stream

    st.Open

    st.Charset = "windows-1251"

    st.LoadFromFile inFile

    st.Position = 0

 

    Dim st2 As ADODB.Stream

    Set st2 = New ADODB.Stream

    st2.Open

    st2.Charset = "cp866"

    st.CopyTo st2

    'если файл существует, при попытке сохранить поток получим ошибку 3004

   st2.SaveToFile outFile

 

    st.Close: Set st = Nothing

    st2.Close: Set st2 = Nothing

 

End Sub

'

'преобразование текстового файла из 'cp866' в 'windows-1251'

'требуется ссылка на библиотеку Microsoft ActiveX Data Objects v2.5 или выше

Sub cp866_windows_1251()

 

    Dim inFile As String

    inFile = "C:\SmartIDReader\bin\output.txt"

 

    Dim outFile As String

    outFile = "C:\SmartIDReader\bin\11output.txt"

 

    Dim st As ADODB.Stream

    Set st = New ADODB.Stream

    st.Open

    st.Charset = "cp866"

    st.LoadFromFile inFile

    st.Position = 0

 

    Dim st2 As ADODB.Stream

    Set st2 = New ADODB.Stream

    st2.Open

    st2.Charset = "windows-1251"

    st.CopyTo st2

    'если файл существует, при попытке сохранить поток получим ошибку 3004

   st2.SaveToFile outFile

 

    st.Close: Set st = Nothing

    st2.Close: Set st2 = Nothing

 

End Sub


Добавлено через 2 часа 59 минут
сколько не перепробовал решений с инета всё как-то работает не правильно, ANSI это точно = windows-1251?
потому, что файл перекодированный кодом ВБА кодировку меняет как надо, а текст не меняется, если перекодировать в ручную, тогда и текст в файле меняется правильно

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