I had a similar problem accentuated-characters-in-name-of-folderitem-catalina
Someone gave me a Method to normalize the encoding.
Public Function NrmStgEnc(Extends CeTexte as String, CeForm as UInt32 = 2) As String
' Cette Method normalise l'encodage d'une String. Un "é" (1 digit) peut aussi être encodé "´e" (2 digits)
#IF TargetMacOS Then ' Depuis Catalina il y a des problème avec les encodages des accents. Un fichier nommé "Téiök" risque de retourner faux au test : (Fich.Name = "Téiök")
If not(CeTexte.Encoding = Nil) Then ' Par contre il n'y a pas de problème quand je fais .Child(Fich.Name) donc dans ce cas je ne normalise pas l'encodage
Declare Function CFStringCreateMutableCopy Lib "Foundation" (alloc as Ptr, maxLength as UInt32, TheString as CFStringRef) as CFStringRef
Declare Sub CFStringNormalize Lib "Foundation" (TheString as CFStringRef, TheForm as UInt32)
Dim mutableStringRef as CFStringRef = CFStringCreateMutableCopy(Nil, 0, CeTexte) ' Inutile : CeTexte.ConvertEncoding(Encodings.UTF8))
CFStringNormalize(mutableStringRef, CeForm)
' CFStringNormalize mutableStringRef, 2 ' Dans un exemple c'était 2, dans l'autre il passait CeForm en paramètre
CeTexte = mutableStringRef
' Avant je mettais l'un des encodages ci-dessous et ça corrigeait le problème
' CeTexte = CeTexte.ConvertEncoding(Encodings.UTF32LE) ' Encodings.UTF32BE ' Encodings.UTF16BE ' Encodings.UTF16LE ' Encodings.MacRoman
' En mettant un des encodages ci-dessous ça ne corrigeait pas le problème
' CeTexte = CeTexte.ConvertEncoding(Encodings.UTF32) ' Encodings.UTF8 ' Encodings.UTF16
CeTexte = CeTexte.ConvertEncoding(DefAppEncod)
End If
#EndIf
Return CeTexte
End Function
But it’s for Mac only.