Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: [решено] ansi в utf-8
Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата 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, отрезать первые три символа, записывать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:46, 19-10-2012 | #4

Название темы: [решено] ansi в utf-8