 |
|
dark-------13 |
01-10-2013 12:32 2226664 |
Как с помощью JS изменить кодировку документа на utf-8 без bom ?
Вложений: 1
Здравствуйте,
Подскажите пожалуйста, как с помощью JS изменить кодировку документа (test.txt) на utf-8 без bom ?
Есть скрипт ниже и еще один скрипт reload.js Файл 104819 который позволяет загружать данные в <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>
|
dark-------13, зачем повтор?! Что непонятного было здесь?
|
dark-------13 |
01-10-2013 12:59 2226678 |
Цитата:
Цитата Iska
dark-------13, зачем повтор?! Что непонятного было здесь? »
|
Как на JS сохранить текст с формы в файл - с этим я разобрался.
Решил создать отдельную тему по перекодировке, т.к. предложенный вами вариант не работает.
|
Цитата:
Цитата dark-------13
т.к. предложенный вами вариант не работает. »
|
Покажите код, который у Вас получился в итоге, и поясните, как именно «не работает».
|
dark-------13 |
01-10-2013 14:34 2226738 |
Исправил - добавив 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
|
И что Вы пишете в поток:
Код:
fileLua.WriteText("\\server\site\test.txt")
?! Текст «\\server\site\test.txt». Не содержимое указанного файла, а банальную строку, буквально — «\\server\site\test.txt».
Аналогично:
Код:
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. Поэкспериментируйте. Многое станет понятнее.
|
dark-------13 |
13-10-2013 10:15 2233534 |
Вот скрипт который должен удалить 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 |
16-10-2013 07:59 2235284 |
Вот еще один скрипт и он тоже не решил проблему перекодировки
Код:
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:57.
© OSzone.net 2001-