sensenmann
Goto Top

VBScript Zeichensatz konvertieren

Guten Morgen,

Ich würde mir gerne den Zeichensatz mehrerer Dateien mittels VBScript konvertieren. Nur habe ich leider bisher nur die Methode gefunden, direkt mit OpenTextFile zu Unicode zu konvertieren, was ich aber brauche ist von ANSI zu UCS-2 Little Endian. Gibt es so eine Funktion überhaupt in VBScript? Ich habe nun schon ewig gesucht und nix gefunden.

MFG
Sensenmann

Content-Key: 148542

Url: https://administrator.de/contentid/148542

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: 77559
77559 07.08.2010 um 18:09:34 Uhr
Goto Top
Hallo Sensenmann,

muss es denn VBscript sein?

Es gibt einen einen Win32 Port von GNU-Recode damit ist es auf der Kommandozeile kein Problem:
>chcp 1252
Aktive Codepage: 1252.

>echo AaÄäEeIiOoÖöUuÜüß>Ansi.txt

>dumphex ansi.txt
DumpHex Version 1.0.1
Copyright (c) 2003 Robert Bachmann

00000000h: 41 61 C4 E4 45 65 49 69 4F 6F D6 F6 55 75 DC FC AaÄäEeIiOoÖöUuÜü
00000010h: DF 0D 0A                                        ß..

>recode cp1252..ucs-2 <ansi.txt >ucs2_BE.txt

>dumphex ucs2_BE.txt
DumpHex Version 1.0.1
Copyright (c) 2003 Robert Bachmann

00000000h: FE FF 00 41 00 61 00 C4 00 E4 00 45 00 65 00 49 þÿ.A.a.Ä.ä.E.e.I
00000010h: 00 69 00 4F 00 6F 00 D6 00 F6 00 55 00 75 00 DC .i.O.o.Ö.ö.U.u.Ü
00000020h: 00 FC 00 DF 00 0A                               .ü.ß..

>recode cp1252..ucs-2/21 <ansi.txt >ucs2_LE.txt

>dumphex ucs2_LE.txt
DumpHex Version 1.0.1
Copyright (c) 2003 Robert Bachmann

00000000h: FF FE 41 00 61 00 C4 00 E4 00 45 00 65 00 49 00 ÿþA.a.Ä.ä.E.e.I.
00000010h: 69 00 4F 00 6F 00 D6 00 F6 00 55 00 75 00 DC 00 i.O.o.Ö.ö.U.u.Ü.
00000020h: FC 00 DF 00 0A 00                               ü.ß...

>

Gruß
LotPings
Mitglied: 76109
76109 07.08.2010 um 21:26:13 Uhr
Goto Top
Hallo LotPings!

Hab zum testen mal einen VBA-Code geschrieben, funktioniert auch soweit face-wink. Allerdings ist mir nicht ganz klar wo in Deinem Beispiel der CR (0Dh) abgeblieben ist?
Soll der entfernt werden oder wurde der nur vergessen?

Gruß Dieter

PS. In VB-Script funktioniert es nicht. Das Problem hierbei ist, dass kein Byte-Array definiert werden kann. Das habe ich durch Trickserei ja noch hinbekommen, aber ich schaffe es nicht Werte in das Byte-Array zu schreiben, funktioniert nicht mal mit CByte(..) face-sad
Mitglied: 76109
76109 08.08.2010 um 11:55:17 Uhr
Goto Top
Hallo Sensenmann, Hallo LotPings!

Habe jetzt was anderes versucht und mit der Konvertierung von Ansi nach UTF16 erhalte ich dieses Ergebnis, wobei hier der CR (0Dh) mit drinnen ist:
Ansi.txt
00000000h: 41 61 C4 E4 45 65 49 69 4F 6F D6 F6 55 75 DC FC AaÄäEeIiOoÖöUuÜü
00000010h: DF 0D 0A ß..
UTF16.txt
00000000h: FF FE 41 00 61 00 C4 00 E4 00 45 00 65 00 49 00 ÿþA.a.Ä.ä.E.e.I.
00000010h: 69 00 4F 00 6F 00 D6 00 F6 00 55 00 75 00 DC 00 i.O.o.Ö.ö.U.u.Ü.
00000020h: FC 00 DF 00 0D 00 0A 00 ü.ß.....

VB-Script:
Const AnsiPath = "E:\Test\Ansi.txt"  
Const Utf16Path = "E:\Test\Utf16.txt"  

Const adTypeBinary = 1
Const adTypeText = 2
Const adSaveCreateOverWrite = 2
 
Dim BinaryStream, Text
    
Set BinaryStream = CreateObject("ADODB.Stream")  
        
With BinaryStream
    .Type = adTypeText
    .Charset = "x-Ansi"  
    .Open
    .LoadFromFile AnsiPath
     Text = .ReadText
    .Close
End With
        
With BinaryStream
    .Type = adTypeText
    .Charset = "UTF-16"  
    .Open
    .WriteText Text
    .SaveToFile Utf16Path, adSaveCreateOverWrite
    .Close
End With

Gruß Dieter
Mitglied: Sensenmann
Sensenmann 09.08.2010 um 16:08:32 Uhr
Goto Top
Hallo LotPings und didi1954,

vielen Dank für eure Antworten! Die VBScript-Lösung funktioniert einwandfrei!

Gruß
Sensenmann
Mitglied: 76109
76109 09.08.2010 um 16:45:24 Uhr
Goto Top
Hallo Sensenmann!

Zitat von @Sensenmann:
vielen Dank für eure Antworten! Die VBScript-Lösung funktioniert einwandfrei!
Gern geschehen. Freut mich wenn's funktioniertface-wink

Gruß Dieter