|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Как с помощью JS изменить кодировку документа на utf-8 без bom ? |
|
VBS/WSH/JS - Как с помощью JS изменить кодировку документа на utf-8 без bom ?
|
Старожил Сообщения: 169 |
Здравствуйте,
Подскажите пожалуйста, как с помощью 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> <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
|
Профиль | Отправить PM | Цитировать dark-------13, зачем повтор?! Что непонятного было здесь?
|
Отправлено: 12:39, 01-10-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 169
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Решил создать отдельную тему по перекодировке, т.к. предложенный вами вариант не работает. |
|
Отправлено: 12:59, 01-10-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата dark-------13:
|
|
Отправлено: 13:36, 01-10-2013 | #4 |
Старожил Сообщения: 169
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Цитата dark-------13:
?! Текст «\\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 Не используйте слепо копипаст с кода по приведённой ссылке. Подите в MSDN, почитайте документацию по ADODB.Stream. Поэкспериментируйте. Многое станет понятнее. |
||
Отправлено: 18:04, 01-10-2013 | #6 |
Старожил Сообщения: 169
|
Профиль | Отправить 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
|
Профиль | Отправить 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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|