Плиз, подскажите, нужно перекодировать содержание файлика из досовской в виндовую кодировку, при этом читать и писать в один файл. Вот такой скриптец выполняется без ошибок, но получается пустышка, кодировка не меняется, подскажите чего поменять в нем?
Dim l_lReturn, l_sSource, l_sDestination, fso, f
Function oemtochar(s)
Dim i,k
For i=1 To Len(s)
k = Asc(Mid(s,i,1))
If (128 <= k) And (k <= 175) Then
k=k+64
ElseIf (224 <= k) And (k <= 239) Then
k=k+16
ElseIf k = 240 Then
k=168
ElseIf k = 241 Then
k=184
End If
l_sSource=l_sSource+Chr(k)
Next
oemtochar=l_sSource
Const ForReading = 1, ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:\print.txt", ForReading)
l_sSource = f.ReadAll
f.close
l_sDestination = Space(Len(l_sSource))
l_lReturn = oemtochar(l_sSource, l_sDestination)
Set f = fso.OpenTextFile("c:\print.txt", ForWriting, True)
f.write l_sDestination
f.close
End Function
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
ZAM>А чем тебе StrConv не угодил?
Видимо, тем, что в VBScript не доступен.
Да и для перекодировки OEM -> ANSI малопригоден...
Аноним>Плиз, подскажите, нужно перекодировать содержание файлика из досовской в виндовую кодировку,
Аноним>при этом читать и писать в один файл
Примерчик:
Dim strBuffer
Const adSaveCreateOverWrite = 2
With CreateObject("ADODB.Stream")
.Open
.Charset = "cp866"
.LoadFromFile "print.txt"
strBuffer = .ReadText
.Position = 0
.SetEOS
.Charset = "windows-1251"
.WriteText strBuffer
.SaveToFile "print.txt", adSaveCreateOverWrite
End With