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

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

Ответить
Настройки темы
VBS/WSH/JS - Как с помощью JS изменить кодировку документа на utf-8 без bom ?

Старожил


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

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


Здравствуйте,
Подскажите пожалуйста, как с помощью JS изменить кодировку документа (test.txt) на utf-8 без bom ?
Есть скрипт ниже и еще один скрипт reload.js reload.7z который позволяет загружать данные в <div></div> из файла test.txt.
После того как в txt записывается русский текст и сохраняется документ обычным блокнотом - эти данные прочитать на html странице уже нельзя.
Код: Выделить весь код
<html>
	
	<head>
		<script src="file://///server/site/reload.js"></script>
		<script>
			var auto_refresh = setInterval(
			function(){
				$('#load_div').load('file://///server/site/test.txt');
			}, 1);
			
			
		</script>
	
	</head>
	<body>

		<div id="load_div"></div>
	</body>
</html>
Вообще предполагается писать данные в test.txt вот таким скриптом
Код: Выделить весь код
<html>
    
<head>

</head>
<body>

<script language="javascript">
function WriteToFile()
{
var fso, s, text;
var fso = new ActiveXObject('Scripting.FileSystemObject');
var s = fso.OpenTextFile('\\\\server\\site\\test.txt', 2, true, 0);
var text=document.getElementById("TextArea1").innerText;
s.WriteLine(text);
s.writeline("<br>");
<!-- s.WriteLine('***********************'); -->
s.Close();
}

</script>
<form name="abc">
<textarea name="text" ID="TextArea1"></textarea>
<button onclick="WriteToFile()">Click to save</Button>  
</form> 
</body>



</html>

Отправлено: 12:32, 01-10-2013

 

Ветеран


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

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


dark-------13, зачем повтор?! Что непонятного было здесь?

Отправлено: 12:39, 01-10-2013 | #2



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

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


Старожил


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

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


Цитата Iska:
dark-------13, зачем повтор?! Что непонятного было здесь? »
Как на JS сохранить текст с формы в файл - с этим я разобрался.
Решил создать отдельную тему по перекодировке, т.к. предложенный вами вариант не работает.

Отправлено: 12:59, 01-10-2013 | #3


Ветеран


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

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


Цитата dark-------13:
т.к. предложенный вами вариант не работает. »
Покажите код, который у Вас получился в итоге, и поясните, как именно «не работает».

Отправлено: 13:36, 01-10-2013 | #4


Старожил


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

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


Исправил - добавив Dim UTFStream ошибки пропали , но кодировку не меняет в файле test.txt
После выполнения скрипта русский текст все равно не виден.

Код: Выделить весь код
<html>
	
	<head>
		<script src="file://///server/site/reload.js"></script>
		<script>
			var auto_refresh = setInterval(
			function(){
				$('#load_div').load('file://///server/site/test.txt');
			}, 1);
			
			
		</script>
	
	</head>
	<body>
		Статичная инфа	
		<div id="load_div"></div>
		Статичная инфа	
	</body>
</html>



Делал так
Код: Выделить весь код
Sub WriteUTF8WithoutBOM()
DIM fileLua
Set fileLua = CreateObject("adodb.stream")
fileLua.Type = 2
fileLua.Mode = 3
fileLua.Charset = "UTF-8"
fileLua.Open
fileLua.WriteText("\\server\site\test.txt")
fileLua.SaveToFile("\\server\site\test.txt")
fileLua.flush
fileLua.Close
End Sub
и так
Код: Выделить весь код
Sub WriteUTF8WithoutBOM()
    Dim UTFStream 
    Set UTFStream = CreateObject("adodb.stream")
    UTFStream.Type = adTypeText
    UTFStream.Mode = adModeReadWrite
    UTFStream.Charset = "UTF-8"
    UTFStream.LineSeparator = adLF
    UTFStream.Open
    UTFStream.WriteText "This is an unicode/UTF-8 test.", adWriteLine
    UTFStream.WriteText "First set of special characters: oaanuuu€", adWriteLine
    UTFStream.WriteText "Second set of special characters: qwertzuiopouasdfghjkleauyxcvbnm\|A€I??a??[]i??;?¤>#&@{}<;>*~?^?°?`y????0", adWriteLine

    UTFStream.Position = 3 '3 skip BOM

    Dim BinaryStream 
    Set BinaryStream = CreateObject("adodb.stream")
    BinaryStream.Type = adTypeBinary
    BinaryStream.Mode = adModeReadWrite
    BinaryStream.Open

    'Strips BOM (first 3 bytes)
    UTFStream.CopyTo BinaryStream

    'UTFStream.SaveToFile "d:\adodb-stream1.txt", adSaveCreateOverWrite
    UTFStream.Flush
    UTFStream.Close

    BinaryStream.SaveToFile "\\server\site\test.txt", adSaveCreateOverWrite
    BinaryStream.Flush
    BinaryStream.Close
End Sub

Отправлено: 14:34, 01-10-2013 | #5


Ветеран


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

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


Цитата dark-------13:
Делал так »
И что Вы пишете в поток:
Код: Выделить весь код
fileLua.WriteText("\\server\site\test.txt")
?! Текст «\\server\site\test.txt». Не содержимое указанного файла, а банальную строку, буквально — «\\server\site\test.txt».

Цитата dark-------13:
и так »
Аналогично:
Код: Выделить весь код
    UTFStream.WriteText "This is an unicode/UTF-8 test.", adWriteLine
    UTFStream.WriteText "First set of special characters: oaanuuu€", adWriteLine
    UTFStream.WriteText "Second set of special characters: qwertzuiopouasdfghjkleauyxcvbnm\|A€I??a??[]i??;?¤>#&@{}<;>*~?^?°?`y????0", adWriteLine
Вам надо писать своё содержимое, то, что у Вас в:
Код: Выделить весь код
var text=document.getElementById("TextArea1").innerText;
s.WriteLine(text);
s.writeline("<br>");
Не используйте слепо копипаст с кода по приведённой ссылке. Подите в MSDN, почитайте документацию по ADODB.Stream. Поэкспериментируйте. Многое станет понятнее.

Отправлено: 18:04, 01-10-2013 | #6


Старожил


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

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


Вот скрипт который должен удалить bom из файла, но он почему-то не работает
Код: Выделить весь код
<script language="VBScript">
' Removes the Byte Order Mark - BOM from a text file with UTF-8 encoding
' The BOM defines that the file was stored with an UTF-8 encoding.
Call RemoveBOM(filePath)
Public function RemoveBOM(filePath)
       
        ' Create a reader and a writer
                Dim writer,reader, fileSize
                Set writer = CreateObject('Adodb.Stream')
                Set reader = CreateObject('Adodb.Stream')
                'from the text file we just wrote
                reader.Open
                reader.LoadFromFile ('c:\test\1.txt')
       
        ' Copy all data from reader to writer, except the BOM
                writer.Mode=3
                writer.Type=1
                writer.Open
                reader.position=5
                reader.copyto writer,-1

        ' Overwrite file
                writer.SaveToFile ('c:\test\1.txt',8)
       
        ' Return file name
                RemoveBOM = ('c:\test\1.txt')
        ' Kill objects
                Set writer = Nothing
                Set reader = Nothing

end Function
</script>

Последний раз редактировалось dark-------13, 13-10-2013 в 11:13.


Отправлено: 10:15, 13-10-2013 | #7


Старожил


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

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


Вот еще один скрипт и он тоже не решил проблему перекодировки
Код: Выделить весь код
Public function RemoveBOM(filePath)
  Dim writer,reader, fileSize
  Set writer = CreateObject("Adodb.Stream")
  Set reader = CreateObject("Adodb.Stream")
  reader.Open
  reader.LoadFromFile filePath
  writer.Mode=3
  writer.Type=1
  writer.Open
  reader.position=3
  reader.copyto writer,-1
  writer.SaveToFile filePath,2
  RemoveBOM = filePath
  Set writer = Nothing
  Set reader = Nothing
end Function
Set objArgs = WScript.Arguments
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(objArgs(0))
Set colFiles = objFolder.Files
For Each objFile in colFiles
  RemoveBOM(objArgs(0) + "\" + objFile.Name)
Next
WScript.Echo "Ok"

Отправлено: 07:59, 16-10-2013 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2010 - [решено] Как изменить кодировку входящего сообщения Microsoft Outlook 2010 SimSim Microsoft Office (Word, Excel, Outlook и т.д.) 9 23-01-2015 15:49
2010 - [решено] Как изменить кодировку входящего сообщения Microsoft Outlook 2010 dartne Microsoft Office (Word, Excel, Outlook и т.д.) 2 29-08-2013 17:00
[решено] Как в нужном файле сменить кодировку на UTF-8? Pozia AutoIt 4 27-12-2012 20:20
CMD/BAT - [решено] Вставить имя файла в текстовый файл (UTF-8 without BOM) Jahnhoy Скриптовые языки администрирования Windows 11 19-09-2011 17:39
[решено] Как изменить кодировку новосозданного документа hasherfrog Вебмастеру 8 07-06-2006 14:17




 
Переход