XbZLib liefert falsche Umlaute [Erledigt]
Moderator: Moderatoren
XbZLib liefert falsche Umlaute [Erledigt]
Ich versuche das Packen von Dateien mit XbZLib zu realisieren. Prinzipiell funktioniert alles, aber die Umlaute der Dateinamen im ZIP-File sind verhunzt.
Die Datei Grünfläche.jpg heißt im ZIP Gr³nflõche.jpg
Mein Programm setzt anfangst SET CHARSET TO ANSI.
Ich habe auch versucht, vor dem Aufruf des XbZLib-Packvorgangs auf SET CHARSET TO OEM umzustellen, bringt gleiches falsches Ergebnis. Wo kann ich nach dem Fehler suchen, bzw. den richtigen Zeichensatz einstellen?
Die Datei Grünfläche.jpg heißt im ZIP Gr³nflõche.jpg
Mein Programm setzt anfangst SET CHARSET TO ANSI.
Ich habe auch versucht, vor dem Aufruf des XbZLib-Packvorgangs auf SET CHARSET TO OEM umzustellen, bringt gleiches falsches Ergebnis. Wo kann ich nach dem Fehler suchen, bzw. den richtigen Zeichensatz einstellen?
Zuletzt geändert von lesny am Mi, 06. Mär 2019 14:27, insgesamt 1-mal geändert.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: XbZLib liefert falsche Umlaute
moin,
woher kommen deine Dateinamen die in das ZIP File sollen
wenn du von Bildern sprichst liegen die vermutlich auf einem Datenträger oder hast du die in einer Datenbank
sind die beiden Befehle um Zeichensatz umwandeln.
das ist ANSI -> OEM ...
woher kommen deine Dateinamen die in das ZIP File sollen
wenn du von Bildern sprichst liegen die vermutlich auf einem Datenträger oder hast du die in einer Datenbank
Code: Alles auswählen
ConvToAnsiCP()
ConvToOEMCP()
gruss by OHR
Jimmy
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: XbZLib liefert falsche Umlaute
Hallo Lesny
das ist kein einfaches Problem.
Ich kenne das auch.
Auf die schnelle gibt es nur eine wirklich funktionierende Lösung: ändere die Filenamen vor dem Packen so dass du keine Umlaute mehr im Namen hast.
Das Problem kommt aus der verwendeten Structure Klassen aus ot4xb genauer dem Member:
dieser wird beim ausführen mit
umgesetzt.
Vielleicht hätte ja Pablo obies auch ANSI komatibel oder du ändert das Kommando selbst .....
Gruss Carlo
das ist kein einfaches Problem.
Ich kenne das auch.
Auf die schnelle gibt es nur eine wirklich funktionierende Lösung: ändere die Filenamen vor dem Packen so dass du keine Umlaute mehr im Namen hast.
Das Problem kommt aus der verwendeten Structure Klassen aus ot4xb genauer dem Member:
Code: Alles auswählen
VARLEN EXTRA MEMBER FileName SIZE TO FNameLen // File Name
Code: Alles auswählen
#xcommand VARLEN EXTRA MEMBER <cc> SIZE TO <sz> => ;
DYNAMIC VAR __<cc> ;
; DYNAMIC PROPERTY <cc> ;
READ iif(::__<cc> == NIL,"", ::__<cc>) ;
WRITE ( ::<sz> := Len(v) , ::__<cc> := v ) ;
; _cgb_ += cPrintf(" + s:%s",<(cc)>) ;
; _cpb_ += cPrintf("s:__%s := PeekStr(@v,@nn,s:%s ),", <(cc)> , <(sz)>) ;
; _cfr_ += cPrintf("s:__%s := ChrR(0,s:%s),FRead(h,@s:__%s,s:%s),",<(cc)>,<(sz)>,<(cc)>,<(sz)>) ;
; _vls_ += cPrintf(" + s:%s ",<(sz)>) ;
Was soviel heisst dass diese Memberklasse kein ANSI beherscht. Was du an deinen verhundsten Filenamen siehst. Du kannst jetzt vor dem schreiben in diese Stuktur den Filenamen von ANSI in OEM umwandeln, so kannst du mit eine geänderten Zeile Code neue Zip Files erstellen. Wenn du aber auch Zipfiles updaten oder entpacken usw. willst werden die änderungen sehr aufwendig.The types C, n, p, and S, and the behavior of c and s with printf functions, are Microsoft extensions and are not ANSI compatible.
Vielleicht hätte ja Pablo obies auch ANSI komatibel oder du ändert das Kommando selbst .....
Gruss Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
Re: XbZLib liefert falsche Umlaute
Die Dateien liegen auf einem Datenträger. Ich übergebe an XbZLib einen Ordner und er soll alles zippen, was in diesem Ordner liegt. Insofern kann ich hier gar nicht direkt eingreifen und Dateinamen umwandeln. Ich werde mit die Antwort von ramses aufgreifen und weiter testen.AUGE_OHR hat geschrieben: ↑So, 03. Mär 2019 9:30 moin,
das ist ANSI -> OEM ...
woher kommen deine Dateinamen die in das ZIP File sollen
wenn du von Bildern sprichst liegen die vermutlich auf einem Datenträger oder hast du die in einer Datenbanksind die beiden Befehle um Zeichensatz umwandeln.Code: Alles auswählen
ConvToAnsiCP() ConvToOEMCP()
Re: XbZLib liefert falsche Umlaute
Hallo Carlo,
diese Änderung:
Vielen Dank!
Gruß Stefan
Perfekt. Da ich nur Dateien in ein neues ZIP packen will, reicht mir das. Funktioniert wie gewünscht. Habe nur eine Zeile Code geändert, und zwar inramses hat geschrieben: ↑So, 03. Mär 2019 11:09 Was soviel heisst dass diese Memberklasse kein ANSI beherscht. Was du an deinen verhundsten Filenamen siehst. Du kannst jetzt vor dem schreiben in diese Stuktur den Filenamen von ANSI in OEM umwandeln, so kannst du mit eine geänderten Zeile Code neue Zip Files erstellen. Wenn du aber auch Zipfiles updaten oder entpacken usw. willst werden die änderungen sehr aufwendig.
Vielleicht hätte ja Pablo obies auch ANSI komatibel oder du ändert das Kommando selbst .....
Gruss Carlo
Code: Alles auswählen
Method XbZLibZip:AddData(cFileName, lStream, cFullName, nFSize, cFTime, cFAttr, cComment, lStoreIt, cBuffer)
Code: Alles auswählen
oCDRec:FileName := ConvToOEMCP(cFName) // cFName
Gruß Stefan