Pazar, Aralık 25, 2005

Türkçe Karakter Problemleri

Java üzerinde geliştirilen yabancı frameworklerde en çok rastladığım problem, "i" harfinden kaynaklanıyor. Yabancılar, java ile geliştirme yaparken, String.toLowerCase ve String.toUpperCase metotlarını direkt kullanıyorlar. Bilmiyorlar ki, bizim dilimizde, bu metotlar kendi dillerindekinden farklı çalışıyor. En son olarak JEdit'in 4.2 versiyonunda ve Jakarta Commons NET kütüphanelerinde bu sorunu fark ettim. Geliştiricilerine sorunu ve çözümü bildirdim...


"i".toUpperCase() metodu, Türkçe bilgisayarlarda, "İ" Stringini üretir. Bu da çoğu zaman uygulamanın beklendiği gibi çalışmamasına sebep olur.

Sorunu düzeltmek için, "i".toUpperCase(Locale.ENGLISH) şeklinde metodu kullanmak gerekir.

Bu tarz problemleri kolay bir şekilde tespit etmek için, şu main metodunu kullanabilirsiniz:


public class Main2 {
public static void main(String[] args) {
Locale.setDefault(new Locale("tr","TR"));
org.gjt.sp.jedit.jEdit.main(args);
}
}


jEdit yerine, hangi kütüphaneyi kullanıyorsunuz, onu koyun. Bir bu şekilde çalıştırın, bir de Locale.setDefault(Locale.ENGLISH); ile çalıştırın. Eğer sorun çıkıyorsa, büyük/küçük harf dönüşümü sırasında sorun oluyor demektir.

1 yorum:

Adsız dedi ki...

uppercase-lowercase dönüşümleri kullandığım her dilde aynıydı: UTF8 içinde yeralan "özel" karakterler ile uyumlu değiller. Aslında kendi kütüphanelerimizi yazmak kolay; vakti zamanında PHP için üşenmeyip yazmıştım.