Umlaute aus Dateiname entfernen

Hallo, ich brauche einmal wieder Eure Hilfe.
ich möchte aus einem Dateinamen alle Umlaute und falsche Zeichen entfernen bzw. umwandeln.
Mit ReplaceAll bin ich leider gescheitert.
Mit den neuen Dateinamen, soll dann aus dem EXILTOOL Herstellungsdatum und GPS Daten auslesen werden.

Vielen Dank

auf dem Mac?
Da sind die Umlaute normal decomposed gespeichert, also als zwei Zeichen.

Schau dir mal die RemoveAccentsMBS Funktion im MBS Plugin an. Die hilft da vielleicht?

ReplaceAll sollte funktionieren

Function ohneUmlaute(s as string) As string dim u, t as string u = EncodeURLComponent(s) t = u _ .ReplaceAll("%C3%A4","ae") _ .ReplaceAll("%C3%B6", "oe") _ .ReplaceAll("%C3%BC", "ue") _ .ReplaceAll("%C3%84","Ae") _ .ReplaceAll("%C3%96", "Oe") _ .ReplaceAll("%C3%9C", "Ue") _ .ReplaceAll("%C3%9F", "ss") return t End Function

aber das EncodeURLComponent hat Nebenwirkungen in dem Fall.
es werden ja noch mehr Zeichen mit % kodiert…

Wieso eigentlich?
Ich kann doch im Terminal auch mit Sonderzeichen, Umlauten usw. arbeiten:

$ exiftool -s -ImageSize "BlübberFatz?{*}.tif" ImageSize : 2048x2560

Wenn das aus Xojo nicht funktioniert, solltest Du mal code posten, damit geschaut werden kann ob evtl. das Quoting falsch ist.

Im MBS Plugin gibt es extra ConvertUnicodeToCharacterCompositionMBS und ConvertUnicodeToCharacterDecompositionMBS.

Bei OS X wird ein Umlaut im Dateiname eben als a + Umlautzeichen gespeichert whrend bei normaler Texteingabe das ganze als ein Zeichen rauskommt.

Probier es mal aus:

[code]dim s1 as string = ConvertUnicodeToCharacterDecompositionMBS("")

MsgBox s1+": "+EncodeHex(s1)

dim s2 as string = ConvertUnicodeToCharacterCompositionMBS("")

MsgBox s2+": "+EncodeHex(s2)[/code]

Wobei viele Funktionen automatisch fr Dateinamen das umbauen.

Und wieso sollte man dafür einen Plugin benötigen? Es gibt bereits im Forum einige Einträge (Suche nach “normalize”), z.B. String comparison works on Windows but not on OSX bei der “CFStringNormalize” verwendet wird.

Die Funktionen oben gehen Crossplatform.

Vielen Dank Leute!
Die Version von Axel hat mir geholfen.