Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
(Bilgi) International database ve dil desteği
#1
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...

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...


Ek Dosyalar Resimler
       
Cevapla
#2
Merhaba,
Bilgi için teşekkürler. Önceden oluşturulmuş ve veri eklenmiş bir database icin bu duzenlemeyi yapabilir miyiz?
Cevapla
#3
Elbette...
İlk olarak Alter Database ile UTF8 olarak çevirin.

ALTER DATABASE SET DEFAULT CHARACTER SET UTF8;

Bu komuttan sonra re-connect yapın.

İkinci iş/işler olarak tablolarınızdaki CHAR/VARCHAR alanları UTF8' e çevirmeniz gerekiyor. Bunun için UTF8 charset ile geçici kolon ekleyip UPDATE ile kopyalamanız, kopyalama sonrası ise eski kolonu silimeniz, sildikten sonra ise geçici kolonu orjinal ismi ile re-name yapmanız gerekiyor. Elbette bu işlemler tek tek elle yapılamayacağından top iş bloğu olan EXECUTE BLOCK ile yapmanız icab eder.

Eğer bu yazdıklarımı uygulamak zor geliyorsa, yeni bir database oluşturup export/import yapmanız uygun olur.

.
Cevapla
#4
(25-09-2024, Saat: 22:55)anemos Adlı Kullanıcıdan Alıntı: Elbette...
İlk olarak Alter Database ile UTF8 olarak çevirin.

ALTER DATABASE SET DEFAULT CHARACTER SET UTF8;

Bu komuttan sonra re-connect yapın.

İkinci iş/işler olarak tablolarınızdaki CHAR/VARCHAR alanları UTF8' e çevirmeniz gerekiyor. Bunun için UTF8 charset ile geçici kolon ekleyip UPDATE ile kopyalamanız, kopyalama sonrası ise eski kolonu silimeniz, sildikten sonra ise geçici kolonu orjinal ismi ile re-name yapmanız gerekiyor. Elbette bu işlemler tek tek elle yapılamayacağından top iş bloğu olan EXECUTE BLOCK ile yapmanız icab eder.

Eğer bu yazdıklarımı uygulamak zor geliyorsa, yeni bir database oluşturup export/import yapmanız uygun olur.

.

Teşekkür ederim
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Database Insert Update İşleminin Uzun Süremesi Altıner 8 1.368 05-06-2024, Saat: 10:48
Son Yorum: 3ddark
  Firebird Database Create Doğru mu? Altıner 2 578 02-05-2024, Saat: 11:00
Son Yorum: hi_selamlar
  Firebird - Unavailable Database Hatası sunbeki 12 5.572 23-06-2021, Saat: 16:16
Son Yorum: esistem
  Çalışma Anında Database Oluşturma akuyumcu63 5 3.893 27-03-2021, Saat: 20:16
Son Yorum: sadikacar60
  Firebird Database Oluşturma SercanTEK 10 9.264 23-08-2020, Saat: 18:10
Son Yorum: akuyumcu63



Konuyu Okuyanlar: 1 Ziyaretçi