Diese Seite wurde maschinell übersetzt. Lesen Sie das englische Original. English

IBSurgeon-Bibliothek

Korrekturen in Firebird 2.5 bezüglich des Zeichensatzes der Verbindungszeichenfolge

Autor: Adriano dos Santos Fernandes [email protected]

Datum: 2008-12-15

Vor FB 2.5 werden Dateinamen, die in der Verbindungszeichenfolge verwendet werden, immer ohne Konvertierung vom Client an den

Server übergeben. Auf dem Server werden diese Dateinamen ebenfalls ohne Konvertierung mit OS-API-Funktionen verwendet. Dies führt zu der Situation, dass Dateinamen mit Nicht-ASCII-Zeichen nicht

gut interoperabel sind, wenn Client und Server unterschiedliche Betriebssysteme oder sogar dasselbe Betriebssystem mit unterschiedlichen

Codepages verwenden.

Das Problem wird in FB 2.5 auf folgende Weise behoben:

Der Dateiname wird standardmäßig als in der OS-Codepage betrachtet.

Ein neues DPB wird eingeführt, namens isc_dpb_utf8.filename. Seine Bedeutung besteht darin, die obige Regel zu ändern, sodass FB

den übergebenen Dateinamen als in UTF-8 betrachten soll.

Wenn ein v2.5- (oder neuerer) Client mit einem Remote-Server kommuniziert, der älter als v2.5 ist, und

isc_dpb_utf8.filename verwendet wurde, konvertiert der Client den Dateinamen von UTF-8 in die Client-

Codepage und übergibt diesen Dateinamen an den Server. Der Client entfernt das isc_dpb_utf8.filename-DPB.

Dies gewährleistet Abwärtskompatibilität, wenn Personen auf Client- und

Server-Betriebssystem dieselbe Codepage verwenden.

Wenn ein v2.5- (oder neuerer) Client mit einem v2.5- (oder neueren) Server kommuniziert und

isc_dpb_utf8.filename nicht verwendet wurde, konvertiert der Client den Dateinamen von der OS-Codepage in

UTF-8 und fügt das isc_dpb_utf8.filename-DPB ein. Wenn isc_dpb_utf8.filename verwendet wurde, übergibt der Client einfach

den ursprünglichen Dateinamen innerhalb des DPB an den Server. Der Client übergibt also immer einen

UTF-8-Dateinamen und das isc_dpb_utf8.filename-DPB an den Server.

Der auf dem Server empfangene Dateiname unterliegt denselben obigen Regeln. Beachten Sie jedoch, dass der v2.5-Client

den Dateinamen möglicherweise automatisch konvertiert und das DPB einfügt. Clients älter als v2.5 tun dies nicht,

daher werden die empfangenen Dateinamen als in der Server-Codepage betrachtet. Wir gewährleisten erneut

Abwärtskompatibilität, wenn Client- und Server-Codepage identisch sind.

Die OS-Codepage und UTF-8 sind möglicherweise nicht die beste Wahl für Dateinamen. Wenn Sie beispielsweise ein

ISQL- (oder ein anderes Tool-) Skript hatten und dieses Skript einen anderen Verbindungszeichensatz verwendet. Sie konnten

ein Skript (oder eine beliebige Datei) nicht korrekt bearbeiten, das mehrere Zeichensätze (Codepages) verwendet. Sie können nun

jedes Unicode-Zeichen als ASCII-Zeichen in der Dateinamen-Verbindungszeichenfolge kodieren. Dies wird

mithilfe des Symbols # erreicht. Es ist ein Präfix für eine Unicode-Codepunktnummer (im hexadezimalen

Format, wie die U+XXXX-Notation). Sie sollten es folgendermaßen schreiben: #XXXX mit X als 0-9, a-f, A-F.

Wenn Sie das Literal # verwenden möchten, können Sie ## oder #0023 (die Codepunktnummer dafür) verwenden.

Dieses Zeichen wird mit dieser neuen Semantik auf dem Server interpretiert, selbst wenn der Client älter

als v2.5 ist.

Die für Konvertierungen verwendete OS-Codepage ist:

- Windows: Die Windows-ANSI-Codepage

- Andere: UTF-8

Aktualisiert für 2.5 Beta 2: 2008-07-11

Diese Regeln gelten nun auch für String-DPB-Elemente.