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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] ansi в utf-8

Ответить
Настройки темы
VBS/WSH/JS - [решено] ansi в utf-8

Аватара для aggressor_

Пользователь


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


Конфигурация

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


Приветствую. Нашёл в интернете вот такой скрипт
Код: Выделить весь код
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 и другие загогулины пунктуации.
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:15, 19-10-2012

 

Ветеран


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

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


Цитата aggressor_:
хотел бы спросить, не затирает ли он при перегоне файлов какие-либо символы? »
Не сталкивался с таким поведением.

Отправлено: 03:34, 19-10-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для aggressor_

Пользователь


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

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


Iska, я в этом ничего не понимаю. Поэтому решил уточнить. Мало ли есть какие-нибудь ограничения. Не хотелось бы потом искать, что зажевал скрипт при перегоне.

Только сейчас заметил, что скрипт гонит в обычный UTF8. Можно как-нибудь сделать, чтобы в UTF-8 (без BOM)?

Последний раз редактировалось aggressor_, 19-10-2012 в 03:43.


Отправлено: 03:36, 19-10-2012 | #3


Ветеран


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

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] ansi в utf-8

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Тип char, определение кодировки (UTF8 или ANSI) EvgeniyQQQ Программирование и базы данных 4 30-03-2013 01:06
Разное - Esc-последовательности в BAT-файлах (ansi.sys) AndreyY89 Microsoft Windows 2000/XP 8 16-03-2012 07:05
Разное - При копировании из OEM получается Ansi SmallGod Microsoft Windows 2000/XP 0 28-05-2010 01:27
Установка - ANSI code page is not installed... Saxofon Microsoft Windows 2000/XP 6 16-03-2009 21:39
CMD/BAT - ANSI<->ASCII akrav Скриптовые языки администрирования Windows 6 16-01-2008 11:22




 
Переход