Eine mit encoding UTF-8 gespeicherte Datei neu speichern mit encoding ANSI
Kann mir jemand sagen ob dies per Batch möglich ist.
Die Ausgangslage ist, dass ich ein Datei einer Applikation bekomme die als UTF-8 encoding gespeichert wurde. FILE2_input.txt
Diese Datei muss ich nun via ConnectDirect ( Sterling Commerce ) auf ein Mainframe senden ( VSAM Katalog )
Error Message= Negative response received during copy send - type EXTCMPR_VARS.BUFFER.
An input LRECL > output LRECL detected for non-compressed file.
Da die UTF-8 Datei komprimiert ist wird der Transfer nicht ausgeführt.
Error Message= Negative response received during copy send - type EXTCMPR_VARS.BUFFER.
An input LRECL > output LRECL detected for non-compressed file.
Jedoch wenn ich die Datei öffne und sage Speichern als FILE2_input.txt und das encoding ANSI verwende kann die Datei
ohne weiteres gesendet werden. Und auf dem Mainframe weiter verarbeitet werden.
Die Ausgangslage ist, dass ich ein Datei einer Applikation bekomme die als UTF-8 encoding gespeichert wurde. FILE2_input.txt
Diese Datei muss ich nun via ConnectDirect ( Sterling Commerce ) auf ein Mainframe senden ( VSAM Katalog )
Error Message= Negative response received during copy send - type EXTCMPR_VARS.BUFFER.
An input LRECL > output LRECL detected for non-compressed file.
Da die UTF-8 Datei komprimiert ist wird der Transfer nicht ausgeführt.
Error Message= Negative response received during copy send - type EXTCMPR_VARS.BUFFER.
An input LRECL > output LRECL detected for non-compressed file.
Jedoch wenn ich die Datei öffne und sage Speichern als FILE2_input.txt und das encoding ANSI verwende kann die Datei
ohne weiteres gesendet werden. Und auf dem Mainframe weiter verarbeitet werden.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 11.02.2010 um 10:42:29 Uhr
auf Gelöst gesetzt
Content-ID: 135614
Url: https://administrator.de/contentid/135614
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
9 Kommentare
Neuester Kommentar
Moin nimisop,
so schwer es mir fällt, dieses Zugeständnis hier im Bereich "Batch & Shell" machen zu müssen... aber...
Meines Wissens geht es ohne Zusatzprogramme nicht mit "nativen" Batchmitteln.
Ich hatte ein ähnliches Problem vor ein ein paar Monaten und seinerzeit auch ein paar Viertelstündchen nach einer "einfachen" Lösung oder einem im Internet bereitgestellen Kommandozeilen-Utility gesucht... ohne Erfolg.
Wenn es irgendwie möglich ist, checke zumindest die beiden anderen Strategien
Falls du über ein Kommandozeilen-Utility stolpern solltest, das UTF-8 in ANSI konvertieren kann... bitte stell den Link hier bereit.
Grüße
Biber
[Edit] @t-mo. Danke für den Link. [/Edit]
so schwer es mir fällt, dieses Zugeständnis hier im Bereich "Batch & Shell" machen zu müssen... aber...
Meines Wissens geht es ohne Zusatzprogramme nicht mit "nativen" Batchmitteln.
Ich hatte ein ähnliches Problem vor ein ein paar Monaten und seinerzeit auch ein paar Viertelstündchen nach einer "einfachen" Lösung oder einem im Internet bereitgestellen Kommandozeilen-Utility gesucht... ohne Erfolg.
Wenn es irgendwie möglich ist, checke zumindest die beiden anderen Strategien
- frage beim Erzeuger/Ersteller dieser Text-im-UTF8-Format-Datei nach, ob nicht eine Bereitstellung als Nicht-Unicode möglich wäre
- und, aber nur als Plan B oder C: sende die Datei nicht im Fixblock (FB)-Format, sondern im als VB (Variable Länge) hoch..
Falls du über ein Kommandozeilen-Utility stolpern solltest, das UTF-8 in ANSI konvertieren kann... bitte stell den Link hier bereit.
Grüße
Biber
[Edit] @t-mo. Danke für den Link. [/Edit]
Hallo Zusammen.
Es gibt da noch die Möglichkeit mit VBS und ADO und somit eine Chance das ganze mit Bordmitteln zu bewerkstelligen. Kommt auf den Versuch an.
*.bat
Grüße
rubberman
Es gibt da noch die Möglichkeit mit VBS und ADO und somit eine Chance das ganze mit Bordmitteln zu bewerkstelligen. Kommt auf den Versuch an.
*.bat
@echo off &setlocal
set "inFile=UTF8.txt"
set "outFile=ANSI.txt"
set "UTF8toANSI=%temp%\tmp.vbs"
>"%UTF8toANSI%" echo Set streamUTF8 = CreateObject("ADODB.Stream")
>>"%UTF8toANSI%" echo Set streamANSI = CreateObject("ADODB.Stream")
>>"%UTF8toANSI%" echo With streamUTF8
>>"%UTF8toANSI%" echo .Open
>>"%UTF8toANSI%" echo .LoadFromFile WScript.Arguments(0)
>>"%UTF8toANSI%" echo .Type = 2
>>"%UTF8toANSI%" echo .LineSeparator = 10
>>"%UTF8toANSI%" echo .CharSet = "UTF-8"
>>"%UTF8toANSI%" echo With streamANSI
>>"%UTF8toANSI%" echo .Open
>>"%UTF8toANSI%" echo .Type = 2
>>"%UTF8toANSI%" echo .LineSeparator = -1
>>"%UTF8toANSI%" echo .Charset = "x-ansi"
>>"%UTF8toANSI%" echo .WriteText streamUTF8.ReadText(-1)
>>"%UTF8toANSI%" echo .SaveToFile WScript.Arguments(1), 2
>>"%UTF8toANSI%" echo .Close
>>"%UTF8toANSI%" echo End With
>>"%UTF8toANSI%" echo .Close
>>"%UTF8toANSI%" echo End With
cscript //nologo "%UTF8toANSI%" "%inFile%" "%outFile%"
del "%UTF8toANSI%"
Grüße
rubberman
Moin rubberman,
super... gefällt mir gut und klappt.
Ich habe in deinem Schnipsel noch die fest verdrahteten Werte
Set "infile=UTF8.txt"/Set "Outfile=ANsi.txt" ersetzt durch Set "infile=%~1"/Set "outfile=%~2".
Probelauf
Die Datei "BspUTF8.txt" enthält eine Zeile mit ein paar Umlauten und Eurozeichen und ist 49 Byte gross.
"BspUTFeditor.txt" ist dieselbe Datei, per Editor geöffnet und als ANSI abgespeichert und danach noch 39 Byte gross.
"BspRubberman.txt" wie zu sehen ist auch und hat (laut Fc.exe) keine Unterschiede zur hand-editierten Datei.
@t-mo
Auf der von dir geposteten Site war ich damals auch... aber das war mir ein wenig überdimensioniert.
Grüße
Biber
super... gefällt mir gut und klappt.
Ich habe in deinem Schnipsel noch die fest verdrahteten Werte
Set "infile=UTF8.txt"/Set "Outfile=ANsi.txt" ersetzt durch Set "infile=%~1"/Set "outfile=%~2".
Probelauf
>e:\schnipsel\Utf2Ansi.cmd d:\temp\BspUTF8.txt d:\temp\BspRubberman.txt
>dir bsp*.*
10.02.10 20:11 39 BspRubberman.txt
10.02.10 19:43 49 BspUTF8.txt
10.02.10 19:52 39 BspUTFeditor.txt
Die Datei "BspUTF8.txt" enthält eine Zeile mit ein paar Umlauten und Eurozeichen und ist 49 Byte gross.
"BspUTFeditor.txt" ist dieselbe Datei, per Editor geöffnet und als ANSI abgespeichert und danach noch 39 Byte gross.
"BspRubberman.txt" wie zu sehen ist auch und hat (laut Fc.exe) keine Unterschiede zur hand-editierten Datei.
@t-mo
Auf der von dir geposteten Site war ich damals auch... aber das war mir ein wenig überdimensioniert.
Grüße
Biber
@Biber
Danke für die lobenden Worte.
Schön zu hören, dass auch bei Dir der Test positiv war
Ein paar erklärende Zeilen würde ich an dieser Stelle noch los werden, da das Script mit wenigen Änderungen recht universell einsetzbar wäre.
Normalerweise würde man mit selbsterklärenden Konstanten arbeiten können, diese sind aber in VBS nich verfügbar.
.Type
Binary = 1
Text = 2
.LineSeparator
Lf = 10
Cr = 13
CrLf = -1
.CharSet
"big5"
"euc-jp"
"euc-kr"
"gb2312"
"iso-2022-jp"
"iso-2022-kr"
"iso-8859-1"
"iso-8859-2"
"iso-8859-3"
"iso-8859-4"
"iso-8859-5"
"iso-8859-6"
"iso-8859-7"
"iso-8859-8"
"iso-8859-9"
"koi8-r"
"shift-jis"
"us-ascii"
"utf-7"
"utf-8"
"x-ansi"
.ReadText
ReadAll = -1
ReadLine = -2
.SaveToFile Name, 2
SaveCreateNotExist = 1
SaveCreateOverWrite = 2
Grüße
rubberman
Danke für die lobenden Worte.
Schön zu hören, dass auch bei Dir der Test positiv war
Ein paar erklärende Zeilen würde ich an dieser Stelle noch los werden, da das Script mit wenigen Änderungen recht universell einsetzbar wäre.
Normalerweise würde man mit selbsterklärenden Konstanten arbeiten können, diese sind aber in VBS nich verfügbar.
.Type
Binary = 1
Text = 2
.LineSeparator
Lf = 10
Cr = 13
CrLf = -1
.CharSet
"big5"
"euc-jp"
"euc-kr"
"gb2312"
"iso-2022-jp"
"iso-2022-kr"
"iso-8859-1"
"iso-8859-2"
"iso-8859-3"
"iso-8859-4"
"iso-8859-5"
"iso-8859-6"
"iso-8859-7"
"iso-8859-8"
"iso-8859-9"
"koi8-r"
"shift-jis"
"us-ascii"
"utf-7"
"utf-8"
"x-ansi"
.ReadText
ReadAll = -1
ReadLine = -2
.SaveToFile Name, 2
SaveCreateNotExist = 1
SaveCreateOverWrite = 2
Grüße
rubberman
Hi zusammen,
ich wollte das tool anderst herum benutzen also von ANSI in UTF-8, das funktioniert auch fast ohne Probleme.
Allerdings macht er in mein Outpufile in der ersten Zeile an den Anfang ein "ÿþ" was die Datei für meine weiteren Verarbeitungen unbrauchbar macht. Hat einer ne Idee wo mein Fehler ist?
so sieht mein Script aus:
Grüße Ket
ich wollte das tool anderst herum benutzen also von ANSI in UTF-8, das funktioniert auch fast ohne Probleme.
Allerdings macht er in mein Outpufile in der ersten Zeile an den Anfang ein "ÿþ" was die Datei für meine weiteren Verarbeitungen unbrauchbar macht. Hat einer ne Idee wo mein Fehler ist?
so sieht mein Script aus:
set "inFile=ich bin ein Input.txt"
set "outFile=ich bin ein Output.txt"
set "UTF8toANSI=%temp%\tmp.vbs"
>"%UTF8toANSI%" echo Set streamANSI = CreateObject("ADODB.Stream")
>>"%UTF8toANSI%" echo Set streamUTF8 = CreateObject("ADODB.Stream")
>>"%UTF8toANSI%" echo With streamAnsi
>>"%UTF8toANSI%" echo .Open
>>"%UTF8toANSI%" echo .LoadFromFile WScript.Arguments(0)
>>"%UTF8toANSI%" echo .Type = 2
>>"%UTF8toANSI%" echo .LineSeparator = -1
>>"%UTF8toANSI%" echo .CharSet = "x-ansi"
>>"%UTF8toANSI%" echo With streamUTF8
>>"%UTF8toANSI%" echo .Open
>>"%UTF8toANSI%" echo .Type = 2
>>"%UTF8toANSI%" echo .LineSeparator = 10
>>"%UTF8toANSI%" echo .Charset = "UTF-8"
>>"%UTF8toANSI%" echo .WriteText streamANSI.ReadText(-1)
>>"%UTF8toANSI%" echo .SaveToFile WScript.Arguments(1), 2
>>"%UTF8toANSI%" echo .Close
>>"%UTF8toANSI%" echo End With
>>"%UTF8toANSI%" echo .Close
>>"%UTF8toANSI%" echo End With
cscript //nologo "%UTF8toANSI%" "%inFile%" "%outFile%"
Grüße Ket
Hallo Zusammen,
hatte die letzte Frage leider nie zur Kenntnis genommen. Für alle die über diesen Thread stolpern und sich geärgert hätten, wenn das Problemm nie gelöst wurde:
Ich habe hier von Anfang an einen kleinen aber nicht unwichtigen Fehler drin. Die Properties der Streams sollten festgelegt sein, bevor die Streams geöffnet werden. Somit würde sich folgendes ergeben:
--- snip ---
--- snip ---
Grüße
rubberman
hatte die letzte Frage leider nie zur Kenntnis genommen. Für alle die über diesen Thread stolpern und sich geärgert hätten, wenn das Problemm nie gelöst wurde:
Ich habe hier von Anfang an einen kleinen aber nicht unwichtigen Fehler drin. Die Properties der Streams sollten festgelegt sein, bevor die Streams geöffnet werden. Somit würde sich folgendes ergeben:
--- snip ---
set "ANSItoUTF8=%temp%\tmp.vbs"
>"%ANSItoUTF8%" echo Set streamANSI = CreateObject("ADODB.Stream")
>>"%ANSItoUTF8%" echo Set streamUTF8 = CreateObject("ADODB.Stream")
>>"%ANSItoUTF8%" echo With streamAnsi
>>"%ANSItoUTF8%" echo .Type = 2
>>"%ANSItoUTF8%" echo .LineSeparator = -1
>>"%ANSItoUTF8%" echo .CharSet = "x-ansi"
>>"%ANSItoUTF8%" echo .Open
>>"%ANSItoUTF8%" echo .LoadFromFile WScript.Arguments(0)
>>"%ANSItoUTF8%" echo With streamUTF8
>>"%ANSItoUTF8%" echo .Type = 2
>>"%ANSItoUTF8%" echo .LineSeparator = 10
>>"%ANSItoUTF8%" echo .Charset = "UTF-8"
>>"%ANSItoUTF8%" echo .Open
>>"%ANSItoUTF8%" echo .WriteText streamANSI.ReadText(-1)
>>"%ANSItoUTF8%" echo .SaveToFile WScript.Arguments(1), 2
>>"%ANSItoUTF8%" echo .Close
>>"%ANSItoUTF8%" echo End With
>>"%ANSItoUTF8%" echo .Close
>>"%ANSItoUTF8%" echo End With
Grüße
rubberman