Batch charset conversion - convert all .txt files in a folder from ibm-850 unicode utf-8

Sample for ScriptUtils.ByteArray.CharSetConvert | Changes | Purchase | Download


     This sample contains short algorithm to convert more files (all files in one folder) from one character set to another. The sample works for any code page (unicode utf-8 -> shift-jis, windows-1250 -> utf-8, ..) and shorter files, the files are converted in memory and there is no good idea to use it for files over 100MB. (See Charset conversion of very large files - 2GB and more).

Batch charset conversion - convert all .txt files in a folder from ibm-850 unicode utf-8 
Option Explicit
'Batch Convert of ibm-850 files to unicode utf-8 with BOM header

Dim FS, Folder, File, SourceFile, DestFile 
Set FS = CreateObject("Scripting.FileSystemObject")
Set Folder = FS.GetFolder(".")

'Process each file in folder
For Each File In Folder.Files
  'For each .txt file
  If LCase(Right(File.Name,4)) = ".txt" Then
    'get a source file name
    SourceFile = File.Path
    'get a destination file name
    DestFile = Replace(File.Path, ".txt", "-utf.txt")

    'convert the file
    FileConvert File.Path, "ibm850", DestFile, "utf-8"  
  End If

Sub FileConvert(SourceFile, SourceCharSet, DestinationFile, DestinationCharSet)
  'Save BOM header at the start of destination file
  SaveBOMHeader DestinationFile, "EFBBBF"

  Dim ByteArray
  Set ByteArray = CreateObject("ScriptUtils.ByteArray")
  'Read the source data from a file
  ByteArray.ReadFrom SourceFile 

  'Set character set of the source file
  ByteArray.CharSet = SourceCharSet

  'Convert the data to a destination charset and save them  
  ByteArray.CharSetConvert(DestinationCharSet).SaveAs DestinationFile, 4
End Sub

Sub SaveBOMHeader(FileName, Header)
  'create byte array object
  Dim ByteArray
  Set ByteArray = CreateObject("ScriptUtils.ByteArray")

  'the bytearray contains BOM header - 3 bytes.
  ByteArray.HexString = Header

  'Save the BOM header to the FileName
  ByteArray.SaveAs FileName
End Sub

Other links for the Batch charset conversion - convert all .txt files in a folder from ibm-850 unicode utf-8 sample


Works with safearray binary data - save/restore binary data from/to a disk, convert to a string/hexstring, codepage/charset conversions, Base64 conversion, etc.
     ByteArray is a COM class specially designed to work with Microsoft Windows Scripting engines - VB Script and JScript in Active Server Pages or WSH and in CHM or HTA applications. It also works with VB Net, Visual basic (VBA - VB 5, VB 6, Word, Excel, Access, ), C#, J#, C++, ASP, ASP.Net, Delphi and with T-SQL OLE functions - see Use ByteArray object article. You can also use the object in other programming environments with COM support, such is PowerBuilder.
     Source code for ByteArray is available within distribution license, please see License page for ASP file upload and ScriptUtilities.


Huge ASP upload is easy to use, hi-performance ASP file upload component with progress bar indicator. This component lets you upload multiple files with size up to 4GB to a disk or a database along with another form fields. Huge ASP file upload is a most featured upload component on a market with competitive price and a great performance . The software has also a free version of asp upload with progress, called Pure asp upload , written in plain VBS, without components (so you do not need to install anything on server). This installation package contains also ScriptUtilities library. Script Utilities lets you create hi-performance log files , works with binary data , you can download multiple files with zip/arj compression, work with INI files and much more with the ASP utility.

© 1996 - 2011 Antonin Foller, Motobit Software | About, Contacts | e-mail:

Other Motobit links:   IISTracer, real-time IIS monitor   ASP file upload - upload files to ASP. 
ActiveX/VBSScript registry editor  ActiveX NT User account manager  Export MDB/DBF from ASP Active LogFile  Email export  ActiveX/ASP Scripting Dictionary object