ICU, oder International Components for Unicode, ist eine Open Source-Bibliothek, die von IBM entwickelt und gepflegt wird. ICU erleichtert die Software-Internationalisierung, indem Unicode-Unterstützung angeboten wird. SQL Anywhere implementiert bestimmte Zeichensatzkonvertierungen und Kollatierungsvorgänge mit ICU.
Idealerweise sollte ICU jederzeit zur Verwendung durch den Datenbankserver verfügbar sein. Die folgende Tabelle zeigt, wann und warum ICU benötigt wird:
ICU wird benötigt, wenn Folgendes auftritt | Hinweise |
---|---|
UCA wird als Kollatierung für den NCHAR- oder CHAR-Zeichensatz verwendet. | UCA erfordert ICU. |
Der Datenbank-Zeichensatz ist nicht UTF-8, sondern ein Mehrbyte-Zeichensatz. | Für die Kennwortkonvertierung vom Datenbank-Zeichensatz in UTF-8 (Datenbank-Kennwörter werden intern in UTF-8 gespeichert). |
Die Client- und Datenbank-Zeichensätze sind verschieden und keiner ist ein Mehrbyte-Zeichensatz (einschließlich UTF-8). Dies umfasst Unicode ODBC-, OLE DB-, ADO.NET- und iAnywhere JDBC-Anwendungen, unabhängig vom Datenbank-Zeichensatz, wenn zumindest einer dieser Clients nicht ICU hat. | Die korrekte Konvertierung in und von einem Mehrbyte-Zeichensatz erfordert ICU. |
Der Datenbank-Zeichensatz ist nicht UTF-8 und eine Konvertierung zwischen CHAR- und NCHAR-Werten ist erforderlich. | Der Datenbankserver benötigt ICU, um UTF-8 in einen anderen Zeichensatz zu konvertieren. |
Ein Embedded SQL-Client verwendet einen anderen NCHAR-Zeichensatz als UTF-8. | Der Datenbankserver benötigt ICU, um UTF-8 in einen anderen Zeichensatz zu konvertieren. Beachten Sie, dass der Standard-NCHAR-Zeichensatz des Embedded SQL-Clients derselbe wie der ursprünglicche Client-CHAR-Zeichendatz ist. Dies kann mit der Funktion db_change_nchar_charset geändert werden. Weitere Hinweise finden Sie unter db_change_nchar_charset-Funktion. |
Die CSCONVERT- oder SORTKEY-Funktion wird verwendet. Die CSCONVERT-Funktion wird aufgerufen, um zwischen Zeichensätzen zu konvertieren, die den Anforderungen des dritten Punkts (s.o.) entsprechen. | Die Zeichensatzkonvertierung erfordert im Fall des dritten Punkts (s.o.) ICU. Die Generierung von Sortierschlüsseln erfordert bei vielen Sortierschlüssellabels UCA, was wiederum ICU erfordert. Weitere Hinweise finden Sie unter CSCONVERT-Funktion [Zeichenfolge] und SORTKEY-Funktion [Zeichenfolge]. |
Die folgende Tabelle zeigt, wann und warum ICU bei Windows Mobile benötigt wird:
ICU wird benötigt, wenn Folgendes auftritt | Hinweise |
---|---|
UCA wird als die NCHAR- bzw. CHAR-Kollatierung verwendet. | UCA erfordert ICU. |
Die SORTKEY-Funktion wird verwendet. | Die Generierung von Sortierschlüsseln erfordert bei vielen Sortierschlüssellabels UCA, was wiederum ICU erfordert. Weitere Hinweise finden Sie unter SORTKEY-Funktion [Zeichenfolge]. |
Der CHAR-Zeichensatz stimmt nicht mit dem Betriebssystem-Zeichensatz überein. | Auch wenn die Zeichensätze übereinstimmen, wird ICU empfohlen, weil dadurch die Zeichensatzkonvertierung verbessert wird, wenn Sie NCHAR verwenden oder wenn der CHAR-Zeichensatz ein Mehrbyte-Zeichensatz ist. |
Wenn Sie die ICU-Bibliothek nicht installieren, müssen Sie bei der Erstellung der Datenbank entweder eine Kollatierung, deren Zeichensatz dem Windows Mobile-Zeichensatz entspricht, oder UTF8BIN als CHAR-Kollatierung wählen. Außerdem müssen Sie bei der Erstellung der Datenbank die UTF8BIN-Kollatierung als NCHAR-Kollatierung wählen.
Sie erhalten eine korrekte Zeichensatzkonvertierung ohne ICU, wenn der Datenbank-Zeichensatz und der Client-Zeichensatz beide Einbyte-Zeichensätze sind und sqlany.cvf verfügbar ist (alle Plattformen), oder wenn das Betriebssystem die Konvertierung unterstützt (nur Windows). Dies liegt daran, dass Einbyte-zu-Einbyte-Konvertierungen ohne ICU verarbeitet werden können, solange die sqlany.cvf-Datei verfügbar ist bzw. das Host-Betriebssystem die entsprechenden Konverter installiert hat.
Bei Unicode-Clientanwendungen erhalten Sie wahrscheinlich eine bessere Gesamtperformance bei Client und Datenbankserver, wenn alle Clients UCI installiert haben, unabhängig vom Datenbank-Zeichensatz. Dies liegt daran, dass möglicherweise einige der erforderlichen Konvertierungsaktivitäten vom Datenbankserver auf den Client übertragen werden können, und weil weniger Konvertierungen erforderlich sind.
Wenn Sie ODBC auf Windows-Plattformen verwenden, müssen Sie überdies ICU auf dem Client installiert haben, sogar bei ANSI-Anwendungen. Dies liegt daran, dass der Treibermanager ANSI ODBC-Aufrufe in Unicode ODBC-Aufrufe konvertiert.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |