IB-Software hat geschrieben:
Elegant ist anders
Es geht tatsächlich etwas eleganter.

Denn der Umweg über URLEncoder()/-Decoder() ist nicht nötig.
Folgendes funktioniert hier (PB 5.71 beta 1 unter Windows 10):
Code:
#Trema = Chr($0308)
Procedure.s Umcodieren(text$)
If FindString(text$, #Trema)
text$ = ReplaceString(text$, "A" + #Trema, "Ä")
text$ = ReplaceString(text$, "a" + #Trema, "ä")
text$ = ReplaceString(text$, "O" + #Trema, "Ö")
text$ = ReplaceString(text$, "o" + #Trema, "ö")
text$ = ReplaceString(text$, "U" + #Trema, "Ü")
text$ = ReplaceString(text$, "u" + #Trema, "ü")
EndIf
ProcedureReturn text$
EndProcedure
; -- Demo
Define s$, t$
s$ = "A" + #Trema + "a" + #Trema +
"O" + #Trema + "o" + #Trema +
"U" + #Trema + "u" + #Trema
Debug s$ + " (" + Len(s$) + " Zeichen)"
t$ = Umcodieren(s$)
Debug t$ + " ( " + Len(t$) + " Zeichen)"
Shardik hat geschrieben:
Das bedeutet, dass TextEdit bei Dateinamen UTF8-NFD ("Decomposed") verwendet, wo Basisbuchstabe und Diakritika getrennt gespeichert werden, während PureBasic UTF8-NFC ("Composed") verwendet, wo ein Umlaut als ein einzelnes Zeichen abgespeichert wird.
So wie ich den Text unter
https://de.wikipedia.org/wiki/Trema verstehe, ist ein Umlaut
immer 1 Zeichen, und ein Basisbuchstabe gefolgt von einem Trema ist etwas anderes als ein Umlaut!
Wenn das stimmt, dann sehe ich hier keinen Bug in PureBasics
DirectoryEntryName()-Funktion.