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

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



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.65
Яндекс индекс цитирования