Автор: Zloy_Gelud
Дата сообщения: 04.12.2008 01:12
UMode & ToAll [исправлено]
Код: --[[ Recode
Преобразует кодировку строки в указанную
strText - строка для перекодировки
strCharsetIn - исходная кодировка строки
strCharsetOut - требуемая кодировка
]]
function Recode(strText, strCharsetIn, strCharsetOut)
strText = String.Replace(strText, "\r\n", "%10%13", false);
-- Java-скрипт
local strJSCode =[[
var fso = new ActiveXObject("Scripting.FileSystemObject");
var stream = new ActiveXObject("ADODB.Stream");
function Recode(text_in, charset_in, charset_out){
stream.Open();
stream.Type = 2;
stream.Charset = charset_out;
stream.WriteText(text_in);
stream.Flush();
stream.Position = 0;
stream.Charset = charset_in;
var text_out = stream.ReadText(-1);
stream.Close();
return (text_out);
}
var text = "]]..strText..[[";
var out = Recode(text, "]]..strCharsetIn..[[", "]]..strCharsetOut..[[");
]]
Script.SetLanguage(Script_JScript);
Script.AddCode(strJSCode, Script_InternalCode);
strResult = String.Replace(Script.GetResultAsString("out"), "%10%13", "\r\n", false);
return strResult;
end
-- тест 1
TextFile.WriteFromString(_TempFolder.."\\test.bat", "tree > C:\\test.txt\r\ndel /F /Q %0", false)
result = Shell.Execute(_TempFolder.."\\test.bat", "open", "", "", SW_HIDE, true);
strRecode = Recode(TextFile.ReadToString("C:\\test.txt"), "cp866", "windows-1251");
Paragraph.SetText("Paragraph1", strRecode);
--[[
-- тест 2
strRecode = Recode("Тест\r\nтест", "windows-1251", "utf-8");
Paragraph.SetText("Paragraph1", strRecode);
]]