![]() |
Datenbank: Firebird • Version: 2.5.2 • Zugriff über: FibPlus
Firebird Sortierfolge deutsch mit UTF8 + Unicode Collation
Moin allerseits,
habe nun endlich herausbekommen, wie ich es fertigbringe, Felder Firebird-Datenbank, die mit UTF8 codiert sind, in deutscher Sortierung anzeigen zu lassen. Bei herkömmlicher Verwendung sortiert Firebird die VARCHAR-Daten so: Zuerst kommen die Großbuchstaben, hinter dem Z kommen die Umlaute, dann kommen die Kleinbuchstaben und hinter dem z wiederum die Umlaute. Ich wollte aber, daß bei der Sortierung erstens nicht zwischen Groß- und Kleinschreibung unterschieden wird, was aber erstmal nichts mit der aktuellen Collation zu tun hat. Zweitens wollte ich erreichen, daß die Umlaute nicht am Ende erscheinen, sondern integriert werden: Ä bzw. ä kommt nach A bzw. a usw. So wie ich das sehe, werden die Umlaute nun als Ae bzw. ae usw. behandelt und entsprechend sortiert. Vorgehensweise Man lade sich zuerst einmal die International ![]() icudt30.dll icuin30.dll icuuc30.dll Bei Firebird liegen diese drei Datein im Ordner bin. Man sieht an der Zahl, daß es sich um die Version 3.0 handelt, die Firebird standardmäßig beiligt. Wir sind aber bereits bei Version 5.0. Die neuen DLLs für Windows sind für 32-bit-Server in der ZIP-Datei ![]() ![]() Installation Hat man sich nun beispielsweise die icu4c-50_1-Win32-msvc10.zip heruntergeladen und entpackt, findet man im Ordner bin die Entsprechungen zu den oben aufgeführten DLLs: icudt50.dll icuin50.dll icuuc50.dll 1. Gehe in der Windwos-Computerverwaltung auf Dienste und deaktiviere den Firebird-Dienst. 2. Sichere die drei 30er-DLLs und lösche sie aus dem BIN-Ordner deiner Firebird-Installation. 3. Kopiere die drei neuen 50er-DLLs in den BIN-Ordner deiner Firebird-Installation. 4. Begebe dich in den Ordner INTL deiner Firebird-Installation. 5. Öffne dort die Datei fbintl.conf mit einem einfachen Text-Editor (z.B. Notepad). 6. In den ersten drei Zeilen findet sich folgender Eintrag:
Code:
Setze nun den Cursor direkt vor den Eintrag default und tippe dort ein: 5.0 gefolgt von einem Leerzeichen. Jetzt sollte in dieser zweiten Zeile folgendes stehen:
<intl_module builtin>
icu_versions default </intl_module>
Code:
7. Nun startest du unter Dienste deinen Firebird-Server wieder.
icu_versions 5.0 default
Nun sollten die Umlaute richtig sortiert werden. Um auch die Groß-Kleinschreibung in die Sortierung einzubeziehen, gibst du in deinem SELECT-Befehl, wo du die Sortierung (z.B. nach de VARCHAR-Feld WORT) festlegst, :
Code:
Bei mir hat das genau so funktioniert ...
Select * FROM TABELLE
ORDER BY UPPER(WORT); |
AW: Firebird Sortierfolge deutsch mit UTF8 + Unicode Collation
Sollte für das Feld WORT eine entsprechende Collation verwendet worden sein, dann sollte dieser zusätzliche Schnick-Schnack eigentlich nicht notwendig sein. Aber vielleicht hab ich auf die Schnelle auch einfach etwas überlesen.
|
AW: Firebird Sortierfolge deutsch mit UTF8 + Unicode Collation
Ich vermeide solche Sortierungsprobleme, indem ich die Komponente die Einträge sortieren lasse. Das hat bis jetzt immer sehr gut funktioniert, man siehe
![]() |
AW: Firebird Sortierfolge deutsch mit UTF8 + Unicode Collation
Zitat:
1. UCS_BASIC 2. UNICODE 3. UNICODE_CI 4. UNICODE_CI_AI 5. UTF8 Mit keiner dieser Collations wurden die Inhalte so sortiert, wie es in Deutschland üblich ist, sondern fehlerhaft wie oben beschrieben. Nachdem ich meinen "zusätzlichen Schnick-Schnack" absolviert hatte, ist die Sortierung genau wie gewünscht. Mit anderen Worten also: Welche Collation sollte das deiner Meinung nach leisten? Soweit ich das verstanden hatte, sind bei Firebird von Haus aus keine deutschen UTF8-Collations im Release dabei. Deshalb hab ich ziemlich lange herumgesucht und gelesen und gelesen, bis mir fast die Augen zufielen, und irgendwann endlich diese Lösung gefunden, die auch erst nach langem Herumprobieren geklappt hat. Ich hätte das also einfacher haben können? Wie? |
AW: Firebird Sortierfolge deutsch mit UTF8 + Unicode Collation
Zitat:
|
AW: Firebird Sortierfolge deutsch mit UTF8 + Unicode Collation
Zitat:
![]() |
AW: Firebird Sortierfolge deutsch mit UTF8 + Unicode Collation
Folgende Abfrage (Feld VC40 wurde mit UTF8 und Collation Unicode in einer Firebird 2.5.1 DB angelegt):
Code:
Gibt mir folgende sortierte Reihenfolge:
select * from t4 order by VC40
Code:
T4_ID VC40
--------------------------------------------------- 1 a 2 A 7 ä 10 Ä 13 Adler 14 ameise 15 Äther 4 b 3 B 8 ö 11 Ö 5 t 6 T 9 ü 12 Ü |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz