Tato stránka byla strojově přeložena. Přečtěte si anglický originál. English

Knihovna IBSurgeon

Opravy v Firebird 2.5 týkající se znakové sady připojovacího řetězce

Autor: Adriano dos Santos Fernandes [email protected]

Datum: 2008-12-15

Před FB 2.5 jsou názvy souborů použité v připojovacím řetězci vždy předávány z klienta na

server bez jakékoli konverze. Na serveru jsou tyto názvy souborů použity s API funkcemi OS bez

jakékoli konverze, také. To vytváří situaci, kdy názvy souborů používající ne-ASCII znaky

nefungují dobře, když jsou klient a server na různých OS nebo dokonce na stejném OS s různými

kódovými stránkami.

Tento problém je řešen ve FB 2.5 následujícím způsobem:

Název souboru je ve výchozím nastavení považován za kódovou stránku OS.

Je zaveden nový DPB s názvem isc_dpb_utf8.filename. Jeho význam je změnit výše uvedené pravidlo, takže FB

by měl považovat předaný název souboru za UTF-8.

Pokud klient verze 2.5 (nebo novější) komunikuje se vzdáleným serverem starším než 2.5 a

isc_dpb_utf8.filename byl použit, klient převede název souboru z UTF-8 na kódovou stránku klienta

a předá tento název souboru serveru. Klient odstraní DPB isc_dpb_utf8.filename.

To zaručuje zpětnou kompatibilitu, když lidé používají stejnou kódovou stránku na klientovi a

serverovém OS.

Pokud klient verze 2.5 (nebo novější) komunikuje se serverem verze 2.5 (nebo novější) a

isc_dpb_utf8.filename nebyl použit, klient převede název souboru z kódové stránky OS na

UTF-8 a vloží DPB isc_dpb_utf8.filename. Pokud byl isc_dpb_utf8.filename použit, klient jen

předá původní název souboru v rámci DPB serveru. Takže klient vždy předává serveru

název souboru v UTF-8 a DPB isc_dpb_utf8.filename.

Název souboru přijatý na serveru podléhá stejným výše uvedeným pravidlům. Ale poznamenejte, že klient verze 2.5

může automaticky převést název souboru a vložit DPB. Klienti starší než 2.5 to nedělají,

takže přijaté názvy souborů budou považovány za kódovou stránku serveru. Opět zaručujeme

zpětnou kompatibilitu, když jsou kódové stránky klienta a serveru stejné.

Kódová stránka OS a UTF-8 nemusí být nejlepší volbou pro názvy souborů. Například, pokud máte

ISQL (nebo jiný nástroj) skript a tento skript používá jinou znakovou sadu připojení. Nemohli byste

správně upravit skript (nebo jakýkoli soubor) pomocí více znakových sad (kódových stránek). Takže nyní můžete

zakódovat jakýkoli znak Unicode jako ASCII znaky v názvu souboru v připojovacím řetězci. To je

dosaženo pomocí symbolu #. Je to předpona pro číslo kódového bodu Unicode (v hexadecimálním

formátu, jako zápis U+XXXX). Měli byste to napsat tímto způsobem: #XXXX s X jako 0-9, a-f, A-F.

Pokud chcete použít doslovný znak #, můžete použít ## nebo #0023 (číslo kódového bodu pro něj).

Tento znak je interpretován s touto novou sémantikou na serveru, i když je klient starší

než 2.5.

Kódová stránka OS použitá pro konverze je:

- Windows: Kódová stránka Windows ANSI

- Ostatní: UTF-8

Aktualizováno pro 2.5 Beta 2: 2008-07-11

Tato pravidla jsou nyní platná také pro položky DPB typu string.