Ова страница је машински преведена. Прочитајте енглески оригинал. English

IBSurgeon библиотека

Исправления в Firebird 2.5, касающиеся кодировки строки подключения

Autor: Adriano dos Santos Fernandes [email protected]

Datum: 2008-12-15

Pre FB 2.5, imena datoteka koja se koriste u connection string-u se uvek prosleđuju od klijenta do

servera bez ikakve konverzije. Na serveru se ta imena datoteka koriste sa OS API funkcijama bez

ikakve konverzije, takođe. Ovo stvara situaciju gde imena datoteka koja koriste ne-ASCII karaktere ne

funkcionišu dobro kada su klijent i server različiti OS ili čak isti OS koji koristi različite

kodne stranice.

Problem je rešen u FB 2.5 na sledeći način:

Ime datoteke se, po podrazumevanoj vrednosti, smatra da je na kodnoj stranici OS-a.

Uvodi se novi DPB, nazvan isc_dpb_utf8.filename. Njegovo značenje je da promeni gornje pravilo, tako da FB

treba da smatra prosleđeno ime datoteke kao da je u UTF-8.

Ako klijent verzije 2.5 (ili noviji) komunicira sa udaljenim serverom starijim od verzije 2.5, i

isc_dpb_utf8.filename je korišćen, klijent konvertuje ime datoteke iz UTF-8 u klijentsku

kodnu stranicu i prosleđuje to ime datoteke serveru. Klijent uklanja isc_dpb_utf8.filename DPB.

Ovo garantuje unazadnu kompatibilnost kada ljudi koriste istu kodnu stranicu na klijentu i

serveru OS.

Ako klijent verzije 2.5 (ili noviji) komunicira sa serverom verzije 2.5 (ili novijim), i

isc_dpb_utf8.filename nije korišćen, klijent konvertuje ime datoteke sa kodne stranice OS-a u

UTF-8 i ubacuje isc_dpb_utf8.filename DPB. Ako je isc_dpb_utf8.filename korišćen, klijent samo

prosleđuje originalno ime datoteke unutar DPB-a serveru. Dakle, klijent uvek prosleđuje serveru

UTF-8 ime datoteke i isc_dpb_utf8.filename DPB.

Ime datoteke primljeno na serveru je podložno istim gornjim pravilima. Ali imajte na umu da klijent verzije 2.5

može automatski konvertovati ime datoteke i ubaciti DPB. Klijenti stariji od verzije 2.5 to ne rade,

tako da će se primljena imena datoteka smatrati kao da su na kodnoj stranici servera. Ponovo garantujemo

unazadnu kompatibilnost kada su kodne stranice klijenta i servera iste.

Kodna stranica OS-a i UTF-8 možda nisu najbolji izbor za imena datoteka. Na primer, ako imate

ISQL (ili neki drugi alat) skriptu i ta skripta koristi drugi connection charset. Ne biste mogli

ispravno urediti skriptu (ili bilo koju datoteku) koristeći više karakter setova (kodnih stranica). Zato sada možete

kodirati bilo koji Unicode karakter kao ASCII karaktere u imenu datoteke u connection string-u. To se

postiže korišćenjem simbola #. To je prefiks za broj Unicode kodne tačke (u heksadecimalnom

formatu, kao U+XXXX notacija). Trebalo bi da to napišete na ovaj način: #XXXX sa X kao 0-9, a-f, A-F.

Ako želite da koristite doslovni #, možete koristiti ## ili #0023 (broj kodne tačke za njega).

Taj karakter se tumači sa ovom novom semantikom na serveru čak i ako je klijent stariji

od verzije 2.5.

Kodna stranica OS-a koja se koristi za konverzije je:

- Windows: Windows ANSI kodna stranica

- Ostali: UTF-8

Ažurirano za 2.5 Beta 2: 2008-07-11

Ova pravila su sada važeća i za string DPB stavke.