Merhaba;
Firebird'e eklenen başta Türkçe olmak üzere, tüm dilleri destekleyen UTF8 kodlamasını öneririm. Kaynaklarda 4 bayt kapladığını söyler; ancak bu azami değer olup değişkendir. ASCII kodu 127'den büyük olan pek çok dilin karakter kodu 2 bayt ile işi biter.
Eğer veritabanını UTF8 kodlaması ile oluşturduysanız tüm dilleri destekleyen bir veritabanına sahipsiniz demektir. Türkçe harflerin doğru sırada gelmesi, "i", "I" eşitliğine yakalanmamak için bir Collation'a ihtiyacınız var. Bu da ICU library ile sağlanıyor.
Şimdi örnek olarak; hem Türkçe desteği olan, hem de harf duyarsız (aksan duyarlı - şapkalı "â" gibi) bir Collation oluşturalım...
Test için şöyle bir tablo kullanabilirsiniz...
Örnek veriler için...
Ve testler...
Firebird'e eklenen başta Türkçe olmak üzere, tüm dilleri destekleyen UTF8 kodlamasını öneririm. Kaynaklarda 4 bayt kapladığını söyler; ancak bu azami değer olup değişkendir. ASCII kodu 127'den büyük olan pek çok dilin karakter kodu 2 bayt ile işi biter.
Eğer veritabanını UTF8 kodlaması ile oluşturduysanız tüm dilleri destekleyen bir veritabanına sahipsiniz demektir. Türkçe harflerin doğru sırada gelmesi, "i", "I" eşitliğine yakalanmamak için bir Collation'a ihtiyacınız var. Bu da ICU library ile sağlanıyor.
Şimdi örnek olarak; hem Türkçe desteği olan, hem de harf duyarsız (aksan duyarlı - şapkalı "â" gibi) bir Collation oluşturalım...
CREATE COLLATION ci FOR UTF8 FROM UNICODE NO PAD CASE INSENSITIVE ACCENT SENSITIVE 'LOCALE=tr_TR'; /* */
Test için şöyle bir tablo kullanabilirsiniz...
CREATE TABLE TABLO1 ( "NAME" VARCHAR(20) );
Örnek veriler için...
INSERT INTO TABLO1 ("NAME") VALUES ('ı'); INSERT INTO TABLO1 ("NAME") VALUES ('I'); INSERT INTO TABLO1 ("NAME") VALUES ('i'); INSERT INTO TABLO1 ("NAME") VALUES ('İ'); INSERT INTO TABLO1 ("NAME") VALUES ('ç'); INSERT INTO TABLO1 ("NAME") VALUES ('Ç'); INSERT INTO TABLO1 ("NAME") VALUES ('a'); INSERT INTO TABLO1 ("NAME") VALUES ('A'); INSERT INTO TABLO1 ("NAME") VALUES ('b'); INSERT INTO TABLO1 ("NAME") VALUES ('B'); INSERT INTO TABLO1 ("NAME") VALUES ('c'); INSERT INTO TABLO1 ("NAME") VALUES ('C');
Ve testler...