12 Ekim 2011 Çarşamba

Business Objects'de Türkçe Verilerdeki Bazı Karakterlerin Düzgün Gösterilmemesi

Microsoft SQL Server 2000 veritabanına OLE DB ile bağlantı kuruyoruz. Bu veritabanında bazı türkçe verilerin düzgün görünmediğini farkettik. Örneğin "ADRES DOĞRULAMA" cümlesi "ADRES DOGRULAMA" olarak görünüyordu. Yani sorun "İ" ve "Ğ" gibi bazı Türkçe karakterlerde görülüyordu.


Aşağıdaki iki yazıda da bizim yaşadığımız soruna benzer durumlardan bahsedilmekte :
Business Objects ve Türkçe Karakterler - Enes KURT
Turkish Characters not showing correctly in universe/report - BOB Forum
Bu problem hakkında bulduğum 3 temel çözüm yolu var. Şimdi bunları açıklamaya çalışacağım.

Çözüm1: Universe veritabanına OLEDB yerine ODBC ile bağlanmak

Yukarıda linkini verdiğim ilk yazıda OLEDB veritabanı bağlantısının ODBC olarak değiştirilmesi tavsiye edilmiş. Bu da sorunu çözüyor ama belirli sebeplerden (yavaşlık, ayrıca ODBC ayarları yapılması gerekmesi gibi) bu çözümü tercih etmedik.


Çözüm2: BI Server'ın kurulu olduğu sanal makinanın "Regional and Language Options>Advanced>Language for non-unicode programs" ayarını Türkçe yapmak

İlk başta biz de problemin veritabanı bağlantısından kaynaklandığını düşündük. Sonradan gördük ki bilgisayarım (local client) 'ın regional setting değerlerini Türkçe olarak değiştirdiğimde problem Universe Designer ve Web Intelligence Rich Client programlarında çözülüyordu fakat Web üzerinden InfoView ile bağlanınca problem sürmekteydi.



Bunun üzerine BI Server'ın kurulu olduğu sanal makinanın da regional setting ayarlarını Türkçe yaptım ve Web üzerinden InfoView ile bağlanınca da problemin çözüldüğünü gördüm.


Çözüm 3: Türkçe Karakter içeren alanların SQL Server'daki collation encodinglerinin Turkish_CI_AI yapmak.

Bu çözüm Universe veritabanına OLEDB ile bağlıyken bile Türkçe karakterlerin düzgün görünmesini sağlıyor.Bu farkın nerden kaynaklandığını anlayamadım. Microsoft'un sitesinde CI, CS, AI ve AS 'nin değerleri şöyle açıklanıyo


CaseSensitivity
CI specifies case-insensitive, CS specifies case-sensitive. 
AccentSensitivity
AI specifies accent-insensitive, AS specifies accent-sensitive.