nulpen
Goto Top

VBscript aus Excelauslesen und an Anwendung übergeben (Problem mit umlauten)

Hallo Zusammen,
vielleicht kann mir jemand helfen, ich habe schon rumgegoogelt und nix gefunden.

Ich übergebe aus einer Anwendung ein Parameter an eine VB-Scriptdatei, diese durchsucht eine XLS-Tabelle und schreibt einen gefundenen Wert wieder zurück.

Wenn ich das Programm über CMD mit script.vbs xxx aufrufe und mir den Rückgabewert mit MSGBOX anzeigen lasse
ist alles in Ordnung, die Umlaute werden sauber dargestellt.

Gebe ich aber den Wert mit

objStdOut.Write TEXT

wieder an das aufrufende Programm zurück, erscheinen die Umlaute mit Sonderzeichen.

TEXT=replace(TEXT,"ö","÷")
TEXT=replace(TEXT,"ä","õ")
TEXT=replace(TEXT,"ü","³")
TEXT=replace(TEXT,"Ö","Í")
TEXT=replace(TEXT,"Ä","-")
TEXT=replace(TEXT,"Ü","_")
TEXT=replace(TEXT,"ß","¯")

Hat leider auch nichts gebracht, die hier aufgeführten Zeichen sind diejenigen die als
Zeichen in der Software auftauchen.

Wie könnte ich das beheben ?

Ich habe nichts gefunden um Code-Page oder Sonstiges für objStdOut.Write zu hinterlegen.

Danke

Ralf

Content-Key: 205812

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

Printed on: April 23, 2024 at 08:04 o'clock

Member: napperman
napperman Apr 29, 2013 at 11:57:06 (UTC)
Goto Top
Moin!

Ich meine in VB muss der replace-part anders lauten:
TEXT = replace(TEXT, Chr(129), "ü")
TEXT = replace(TEXT, chr(132), "ä")
TEXT = replace(TEXT, chr(148), "ö")
TEXT = replace(TEXT, chr(129), "ü")
TEXT = replace(TEXT, chr(142), "Ä")
TEXT = replace(TEXT, chr(153), "Ö")
TEXT = replace(TEXT, chr(154), "Ü")
TEXT = replace(TEXT, chr(225), "ß")
Mitglied: 76109
76109 Apr 29, 2013 at 13:56:47 (UTC)
Goto Top
Hallo nulpen!

Also, wenn ich dieses VB-Script (Test.vbs)
WScript.StdOut.Write "Ein Satz mit Umlauten <äöüßÄÖÜ>"   
per 'cscript //nologo Test.vbs' aufrufe, dann werden die Umlaute bei mir richtig dargestellt...

Gruß Dieter
Member: nulpen
nulpen Apr 30, 2013 at 10:52:46 (UTC)
Goto Top
Hallo Zusammen,

da ich das Script über ein anderes Programm aufrufe und abarbeiten lasse
(ohne sichtbare Ausgabe in der console), habe ich nun erkannt wie es funktioniert:

1. Der Zeichensatz der verwendet wird ist natürlich ANSI, demzufolge bekomme ich
über MSGBOX immer das "ö" angezeigt. (chr 246)
Bei der Übergabe an das Programm wird in meinem Fall aber der ASCII-Code übergeben, warum auch immer .
(Chr 148)

Somit habe ich jetzt folgendes eingebaut und es geht.

TEXT = replace(TEXT, Chr(252), chr(129)) 'ü
TEXT = replace(TEXT, chr(228), chr(132)) 'ä
TEXT = replace(TEXT, chr(246), chr(148)) 'ö
TEXT = replace(TEXT, chr(240), chr(142)) 'Ä
TEXT = replace(TEXT, chr(214), chr(153)) 'Ö
TEXT = replace(TEXT, chr(242), chr(154)) 'Ü
TEXT = replace(TEXT, chr(238), chr(225)) 'ß

Danke an napperman der mit den CHR-codes richtig lag, muss aber auf beiden Seiten eingesetzt werden.

Vielen Dank für die Hilfe


Ralf