aggressor_ |
19-10-2012 03:15 2008283 |
ansi в utf-8
Приветствую. Нашёл в интернете вот такой скрипт
Код:
option Explicit
Dim fso,files,file
Const adTypeBinary = 1
Const adTypeText = 2
Const bOverwrite = True
Const bAsASCII = False
Dim oFr : Set oFr = CreateObject("ADODB.Stream")
Dim sFr : sFr = "Windows-1251"
Dim oTo : Set oTo = CreateObject("ADODB.Stream")
Dim sTo : sTo = "utf-8"
set fso = CreateObject("Scripting.FileSystemObject")
set files = fso.GetFolder("D:\www\index").Files
For Each file In files
oFr.Type = adTypeText
oFr.Charset = sFr
oFr.Open
oFr.LoadFromFile file
oTo.Type = adTypeText
oTo.Charset = sTo
oTo.Open
oTo.WriteText oFr.ReadText
oTo.SaveToFile ("D:\www\index2\" & file.Name)
oFr.Close
oTo.Close
Next
Вроде работает хорошо. Но хотел бы спросить, не затирает ли он при перегоне файлов какие-либо символы? Файлы содержат теги html и другие загогулины пунктуации.
|
Цитата:
Цитата aggressor_
хотел бы спросить, не затирает ли он при перегоне файлов какие-либо символы? »
|
Не сталкивался с таким поведением.
|
aggressor_ |
19-10-2012 03:36 2008286 |
Iska, я в этом ничего не понимаю. Поэтому решил уточнить. Мало ли есть какие-нибудь ограничения. Не хотелось бы потом искать, что зажевал скрипт при перегоне.
Только сейчас заметил, что скрипт гонит в обычный UTF8. Можно как-нибудь сделать, чтобы в UTF-8 (без BOM)?
|
Цитата:
Цитата aggressor_
Можно как-нибудь сделать, чтобы в UTF-8 (без BOM)? »
|
Напрямую — никак. Только отсекать, наподобие:
читать дальше »
Код:
Option Explicit
Const adTypeBinary = 1
Const adTypeText = 2
Const adModeReadWrite = 3
Dim objFSO
Dim objFile
Dim objStreamText
Dim objStreamBinary
Dim strContent
Dim strNewFileName
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objStreamText = WScript.CreateObject("ADODB.Stream")
Set objStreamBinary = WScript.CreateObject("ADODB.Stream")
With objStreamText
.Type = adTypeText
.Mode = adModeReadWrite
.Open
End With
With objStreamBinary
.Type = adTypeBinary
.Mode = adModeReadWrite
.Open
End With
For Each objFile In objFSO.GetFolder("E:\Песочница\0187").Files
With objStreamText
.Charset = "windows-1251"
.LoadFromFile objFile.Path
strContent = .ReadText()
.Position = 0
.SetEOS
.Charset = "utf-8"
.WriteText strContent
.Position = 3
.CopyTo objStreamBinary
.Position = 0
.SetEOS
strNewFileName = objFSO.BuildPath("E:\Песочница\0188", objFile.Name)
If objFSO.FileExists(strNewFileName) Then
objFSO.DeleteFile strNewFileName, True
End If
With objStreamBinary
.SaveToFile strNewFileName
.Position = 0
.SetEOS
End With
End With
Next
objStreamText.Close
objStreamBinary.Close
Set objStreamBinary = Nothing
Set objStreamText = Nothing
Set objFSO = Nothing
WScript.Quit 0
или посредством «Scripting.FileSystemObject» → «TextStream»: читать как ANSI, отрезать первые три символа, записывать.
|
Время: 04:46.
© OSzone.net 2001-