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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 148542
Url: https://administrator.de/contentid/148542
Ausgedruckt am: 24.11.2024 um 10:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Sensenmann,
muss es denn VBscript sein?
Es gibt einen einen Win32 Port von GNU-Recode damit ist es auf der Kommandozeile kein Problem:
Gruß
LotPings
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
Hallo LotPings!
Hab zum testen mal einen VBA-Code geschrieben, funktioniert auch soweit . 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(..)
Hab zum testen mal einen VBA-Code geschrieben, funktioniert auch soweit . 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(..)
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:
VB-Script:
Gruß Dieter
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
Hallo Sensenmann!
Gern geschehen. Freut mich wenn's funktioniert
Gruß Dieter
Gern geschehen. Freut mich wenn's funktioniert
Gruß Dieter