ClassicASP

File Encoding Conversion ansi to utf-8 vbscript

투명함이진실 2014. 7. 2. 14:09

FilesystemObject 로는 안되고, ADODB.Stream 을 이용해야 될듯

JScript
function ansiToUtf8(fileName) {
    var indir = "ansiin";
    var outdir = "utf8out";
    var ansi = WScript.CreateObject("Scripting.FileSystemObject");
    
    var utf8 = WScript.CreateObject("ADODB.Stream");
    utf8.Open();
    utf8.Charset = "UTF-8";
    utf8.WriteText(ansi.OpentextFile(indir+"\\"+fileName,1,false,false).ReadAll());
    utf8.SaveToFile(outdir+"\\"+fileName, 2 /*adSaveCreateOverWrite*/);
    utf8.Close();
}

 

VBScript

   Const adTypeBinary = 1 
   Const adTypeText   = 2 
   Const bOverwrite   = True 
   Const bAsASCII     = False 
  
   Dim oFS     : Set oFS    = CreateObject( "Scripting.FileSystemObject" ) 
  
   Dim sTxt    : sTxt       = "aäoöuü" 
   Dim sFiNa   : sFiNa      = ".\convcs" 
   Dim oFrom   : Set oFrom  = CreateObject( "ADODB.Stream" ) 
   Dim sFrom   : sFrom      = "Windows-1252" 
   Dim sFFSpec : sFFSpec    = oFS.GetAbsolutePathName( sFiNa & "-cp1252.txt" ) 
   Dim oTo     : Set oTo    = CreateObject( "ADODB.Stream" ) 
   Dim sTo     : sTo        = "utf-8" 
   Dim sTFSpec : sTFSpec    = oFS.GetAbsolutePathName( sFiNa & "-utf8.txt" ) 
  
   If oFS.FileExists( sTFSpec ) Then oFS.DeleteFile sTFSpec 
  
   oFS.CreateTextFile( sFFSpec, bOverwrite, bAsASCII ).WriteLine sTxt 
  
   oFrom.Type    = adTypeText 
   oFrom.Charset = sFrom 
   oFrom.Open 
   oFrom.LoadFromFile sFFSpec 
   WScript.Echo oFrom.Size & " Bytes in " & sFFSpec 
  
   oTo.Type    = adTypeText 
   oTo.Charset = sTo 
   oTo.Open 
   oTo.WriteText oFrom.ReadText 
   WScript.Echo oTo.Size & " Bytes in " & sTFSpec 
   oTo.SaveToFile sTFSpec 
  
   oFrom.Close 
   oTo.Close