Aktuelle Zeit: 20.10.2019 15:31

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Createpack - Probleme mit Umlauten in Dateinamen
BeitragVerfasst: 31.08.2019 20:30 
Offline

Registriert: 06.03.2019 21:52
Hallo allerseits,

habe mir 2 kleine Zip-Routinen geschrieben, die (fast) funktionieren. Problem: Bei den mit 7Zip entpackten Dateien werden die Umlaute in den Dateinamen durch "Schrott" ersetzt. Wie kann man das Problem lösen?

Code:
UseLZMAPacker()
Global ZipType$ = ".7z"

Global NewList files_list$()
Global NewList files2zip_list$()

Procedure findfiles(ppath$)
;liest alle Dateieinträge des Verzeichnisses ppath$ (einschl. Unterverzeichnisse) in die files_list$()
  PathAddBackslash_(ppath$) 
  Dir = ExamineDirectory(#PB_Any, ppath$, "*.*")
  If Dir
    While NextDirectoryEntry(Dir)
      Name$ = DirectoryEntryName(Dir)
      Type = DirectoryEntryType(Dir)
      If Name$ = "." Or Name$ = ".." : Continue : EndIf
      If Type = #PB_DirectoryEntry_File
        AddElement(files_list$())
        files_list$() = ppath$ + name$
      EndIf
      If Type = #PB_DirectoryEntry_Directory
        findfiles(ppath$ + Name$)
      EndIf
    Wend
    FinishDirectory(Dir)
  EndIf
EndProcedure


Procedure zipdirto(psource$, ziptarget$)
 
  check = FileSize(psource$)
  If check >= 0
    ;ist eine Datei
   
   
  ElseIf check = -1
    ;nicht gefunden
   
   
  ElseIf check = -2
    ;ist ein Verzeichnis
   
    ClearList(files_list$())
    ClearList(files2zip_list$())
   
    PathAddBackslash_(psource$)
    findfiles(psource$)
   
    ForEach files_list$()                      ;kopiert die Liste (files2zip_list$()) nach files2zip_list$()
      AddElement(files2zip_list$())
      files2zip_list$() = files_list$()
    Next
    ziptarget$ = ziptarget$ + ZipType$
   EndIf
 
  If check = -2
    check = FileSize(ziptarget$)
    If check > 0
      err = RenameFile(ziptarget$, GetPathPart(ziptarget$) + GetFilePart(ziptarget$, #PB_FileSystem_NoExtension) + "_alt_" + Str(Date()) + "." + GetExtensionPart(ziptarget$))
      Delay(100)
      If err = 0
        ProcedureReturn -1
        ;vorhandene Datei kann nicht umbenannt werden
      EndIf
    EndIf
    zip = CreatePack(#PB_Any, ziptarget$, #PB_PackerPlugin_Lzma, 5)
    ForEach files2zip_list$()
      AddPackFile(zip, files2zip_list$(), RemoveString(files2zip_list$(),psource$,#PB_String_NoCase))
    Next
    ClosePack(zip)
  EndIf
EndProcedure


Procedure zipfilesto(pextlist$, psource$, ziptarget$)
  If pextlist$ = ""
    ProcedureReturn -2
    ;Extensionstring leer
  EndIf
  ClearList(files_list$())
  ClearList(files2zip_list$())
  PathAddBackslash_(psource$)
  findfiles(psource$)
  If CountString(pextlist$,"|") = 0
    pextlist$ + "|"
  EndIf
  n = 1
  While StringField(pextlist$, n, "|") <> ""
    ext$ = StringField(pextlist$, n, "|")
    ForEach files_list$()
      If LCase(GetExtensionPart(files_list$())) = LCase(ext$)
        AddElement(files2zip_list$())
        files2zip_list$() = files_list$()
      EndIf
    Next
    n + 1
  Wend
  ziptarget$ = ziptarget$ + ZipType$
   check = FileSize(ziptarget$)
    If check > 0
      err = RenameFile(ziptarget$, GetPathPart(ziptarget$) + GetFilePart(ziptarget$, #PB_FileSystem_NoExtension) + "_alt_" + Str(Date()) + "." + GetExtensionPart(ziptarget$))
      Delay(100)
      If err = 0
        ProcedureReturn -1
        ;vorhandene Datei kann nicht umbenannt werden
      EndIf
    EndIf
    zip = CreatePack(#PB_Any, ziptarget$, #PB_PackerPlugin_Lzma, 5)
    ForEach files2zip_list$()
      AddPackFile(zip, files2zip_list$(), RemoveString(files2zip_list$(),psource$,#PB_String_NoCase))
    Next
    ClosePack(zip)
EndProcedure

;zipdirto(quellverzeichnis, Speicherort und Name der Zip-Datei (ohne "zip"; wird vom Prog eingefügt)
;zipfilesto(String mit Dateinamenserweiterungen, |-getrennt, quellverzeichnis, Speicherort und Name der Zip-Datei (ohne "zip"; wird vom Prog eingefügt)



edit: Mit UseZipPacker() und #PB_PackerPlugin_Zip gibt es kein Umlaute-Problem. Bug oder Feature?

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Immernoch: Createpack - Probleme mit Umlauten in Dateinamen
BeitragVerfasst: 02.09.2019 22:38 
Offline

Registriert: 06.03.2019 21:52
Hallo,

dachte zuerst, dass das Umlaut-Problem mit der Wahl der Zip-Art erledigt sei, isses aber nicht.

In der Zip-Datei werden die Umlaute falsch dargestellt, beim Entpacken mit 7Zip werden sie wieder richtig geschrieben. Andere Zip-Programme schreiben die entpackten Dateinamen dann mit den falschen Umlauten, z. B. der in FreeCommander integrierte Enpacker. Oder der in Win10 integrierte Enpacker, ...

Habe im Forum alte Einträge gesehen, wo dieser (oder ein sehr ähnlicher) Bug als beseitigt beschrieben wurde. Habe PB5.71 (auf UTF eingestellt) und das gleiche Problem, z.b. das ü wird zu ├╝. Wer kann da helfen? Müssen die Dateinamen beim
AddPackFile-Befehl irgendwie "vorbehandelt" werden? Wenn ja, wie?

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Createpack - Probleme mit Umlauten in Dateinamen
BeitragVerfasst: 04.09.2019 21:21 
Offline
Benutzeravatar

Registriert: 04.02.2005 15:40
Wohnort: Kaufbeuren
Habe bei PackExModule.pbi jetzt einen Workaround eingebaut.
Solange du das Module benutzt, kannst du normal mit Umlauten arbeiten. Bei fremden Entpackern bleiben die Dateinamen aber noch halbwegs lesbar.
z.B. "Äpfel.txt" wird zu "A'pfel" oder "Süßes.txt" zu "Su'!3es.txt".
Keine perfekte Lösung, aber ein guter Kompromiss, wenn man es auch mit Fremdpackern auslesen will.

_________________
Download der PureBasic-Module (GitHub)

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Createpack - Probleme mit Umlauten in Dateinamen
BeitragVerfasst: 06.09.2019 22:32 
Offline

Registriert: 06.03.2019 21:52
Hallo Thorsten1867,

vielen Dank für Deine Mühe, aber das hat keinen Sinn. Man kann mit der Befehlszeilenversion von 7zip recht gut arbeiten. Schade, dass das mit PB nicht so gut geht, erst recht, wo das Problem wohl schon einige Zeit bekannt ist. Da hat schon vor einiger Zeit jemand im Board gemeint, dass Probleme mit Umlauten längst erledigt sein müssten, aber denkste - gibt's auch 2019 noch.

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Createpack - Probleme mit Umlauten in Dateinamen
BeitragVerfasst: 07.09.2019 13:09 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Entpackt PureBasic korrekt?

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Createpack - Probleme mit Umlauten in Dateinamen
BeitragVerfasst: 07.09.2019 15:08 
Offline

Registriert: 06.03.2019 21:52
Hallo Mijikai,

habe gar nicht ausprobiert, ob PB richtig entpacken würde. Meine Anwendung stellt nur das Archivieren als Datensicherung zur Verfügung. Mit ziemlicher Wahrscheinlichkeit werden die gesicherten Daten nie wieder benötigt. Aber wenn doch, dann wäre die Rekonstruktion der Datenstände relativ tricky - leichtfertiges wiederherstellen per Mausklick könnte mehr Schaden als Nutzen nach sich ziehen.

Da meine Software nur einen User hat, träfe es dann mich, die Daten zu sichten und ggf. beschädigte oder fehlende Dateien zu ersetzen - mit etwas Glück nur alle Jubeljahre mal. Wenn weitere User hinzukämen (theoretisch möglich, aber eher unwahrscheinlich), wäre das Programmieren geeigneter Wiederherstellungsroutinen sicherlich erforderlich.

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye