Ich habe eine Frage über die Windows Invariante Kultur.Windows Invariante Kultur Puzzle
Kurz und bündig, meine Frage ist:
existiert dort jedes Paar von Zeichen c1 und c2, so dass:
niedriger (c1, Invarianten) = latein allgemeine niedriger (c2, invarianten)
aber
niedriger (c1, invaraint)! = invariant niedriger (c2, invarianten)
Hintergrund:
Ich brauche einen invarianten String für Kleinbuchstabe speichern (einen Dateinamen darstellt) innerhalb von SQL Server Compact, die keine Fenstern invariant Sortierungen unterstützt.
Idealerweise möchte ich dies tun, ohne alle meine Vergleichslogik aus der Datenbank und in meine App ziehen zu müssen.
Die Idee, die ich zur Lösung dieses Problems hatte, war die Speicherung von zwei Versionen aller Dateinamen: einer für die Anzeige der Daten für den Kunden und einer für die Durchführung von Vergleichen. Die Vergleichsspalte würde unter Verwendung des windowsinvarianten Gebietsschemas in Kleinbuchstaben konvertiert, bevor sie in der Datenbank gespeichert wird.
Allerdings habe ich keine Ahnung, welche Art von Mappings die invariante Kultur tut, abgesehen von der Tatsache, dass Windows verwendet, um Dateinamen zu vergleichen.
Ich frage mich, ob es möglich ist, falsche Positive (oder falsche negative) als Ergebnis dieses Schemas zu bekommen.
Das heißt, kann ich Zeichen produzieren (zuvor niedriger Cased mit der invarianten Kultur), die einander unter Verwendung der Latin-General-1 case insensitive SQL-Server-Kollatierung vergleichen, aber unter der Invariante nicht gleich miteinander vergleichen Kultur?
Wenn dies passieren kann, dann kann meine App zwei Dateien betrachten, die nach Meinung von Windows unterschiedlich sind. Dies könnte letztendlich zu Datenverlust führen.
HINWEIS:
Ich bin mir bewusst, dass es möglich ist, Groß- und Kleinschreibung von Dateien unter Windows zu haben. Ich muss diese Szenarien jedoch nicht unterstützen.
Ja. Internationale Benutzer können zum Beispiel nicht-ASCII-Zeichen verwenden, wenn sie ihre Dateien benennen. –
Könnten Sie vielleicht das Problem lösen, indem Sie internationale Benutzer auf ascii beschränken? –
Je nachdem, was er speichert, kann er das Problem lösen, indem er internationale Benutzer (und auch ägyptische Benutzer) auf Arabisch beschränkt. Aber er sagte, er speichert Dateinamen, und viele Dateinamen sind nicht auf Arabisch. –