VBScript: Text von UTF-8 nach Windows-1252 konvertieren mit dem ADO Stream-Objekt

Last Updated on 2. Juni 2016 by Thomas J. Fehr

Soll ein Text, der als UTF-8 codiert wurde, in eine andere Zeichencodierung umgewandelt werden, kann dazu das ADO Stream-Objekt verwendet werden. Die hier verwendete Codierung “Windows-1252” ist eine Untermenge des ISO-8859-1 Character Sets.


'/***
' @brief convert a utf-8 text to an Windows-1252 text
' @param utf8xml, value
' @return text with Windows-1252 character set
'***/
Function UTF8TOISO(byval utf8xml)
On Error Resume Next

Dim objStream
const adTypeText = 2

Set objStream = CreateObject( "ADODB.Stream" )
Set objStreamISO = CreateObject( "ADODB.Stream" )

objStream.Type = adTypeText
objStream.Charset = "utf-8"
objStream.Open

'write data to stream
objStream.WriteText utf8xml
objStream.Position = 0

objStreamISO.Type = adTypeText
objStreamISO.Charset = "Windows-1252"
objStreamISO.Open
objStreamISO.WriteText objStream.ReadText
objStream.Position = 0

If Err Then
UTF8TOISO = ""
Else
UTF8TOISO = objStreamISO.ReadText
End If

objStream.Close
objStreamISO.Close
Set objStream = Nothing
Set objStreamISO = Nothing
End Function

Die verwendeten Properties und Funktionen des Stream-Objekts sind:

  • .Open  Öffnet den Stream
  • .Close  Schliesst den Stream
  • .Charset  Legt fest, welche Zeichencodierung verwendet werden soll
  • .Type  Definiert ob es ein Binär- oder Textstream ist
  • .WriteText  Schreibt Textdaten in den Stream
  • .ReadText  Liest Textdaten vom Stream
  • .Position  Legt die Position im Stream fest (in Bytes)

Diese Funktion lässt sich auch leicht modifizieren, wenn der konvertierte Text in einer Datei gespeichert werden soll. Dazu muss nur die Funktion “.SaveToFile(filename, adSaveCreateOverWrite)” des ADO Stream aufgerufen werden.

Text UTF-8 codiert in einer Datei speichern

Um einen Text UTF-8 codiert in einer Datei zu speichern kann folgender Code verwendet werden:


'/***
' @brief save a text UTF-8 coded in a file
' @param textToSave, value
' @param filename, the name of the file to create
' @return true on no error or false on error
'***/
Function saveFileAsUTF8(byval textToSave, byval filename)
	On Error Resume Next
    Dim objStream
	const adTypeText = 2
	Const adSaveCreateOverWrite = 2
    
    Set objStream = CreateObject( "ADODB.Stream" )
	objStream.Charset = "utf-8"
	objStream.Mode = adModeReadWrite	
	objStream.Type = adTypeText
	objStream.Open
	
	'write data to stream and save to file
    objStream.WriteText textToSave	
	objStream.Flush
	objStream.Position = 0	
	objStream.SaveToFile filename, adSaveCreateOverWrite	
    
    If Err Then
        ISOTOUTF8 = false
    Else
		ISOTOUTF8 = true
    End If	

    objStream.Close
    Set objStream = Nothing
End Function

'Aufruf der Funktion
call saveFileAsUTF8("Die bunte Welt besteht aus einem grünen Wald, einer hässlichen Geschichte und dem öffentlichen Grund...", "D:\tmp\ASP\utf8.txt")

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.