Solaris'te Java Uygulamasında Türkçe Karakter Sorunu
Solaris üzerinde çalışan Weblogic 10.3.5 uygulama sunucumuzda log4j üzerinden yazdırdığımız log dosyalarında geçen Türkçe karakterlerin bozuk gözüktüğünü farkettik ve bunun sebebini araştırmak üzere önce Java kodlarını incelemeye başladık. Gördük ki yerel geliştirme ortamımızda Türkçe karakterler düzgün şekilde yazdırılıyor. Bunun üzerine aklımıza önce veritabanı bağlantısında kullandığımız sürücülerin gelen verinin karakter setini bozduğunu düşündük ama dikkat ettiğimizde statik loglarda da Türkçe karakter sorunu olduğunu farkettik.
Bunun üzerine sistemin dil ayarlarına bakmayı düşündük ve
$ env
LANG=en_US
şeklinde bir dil tanımı olduğunu gördük. Solaris kurulumumuzdaki LANG sistem değişkenine bakan Java sadece ANSI en_US olarak bekliyordu gelen karakterleri. Bunu şu şekilde değiştirdiğimizde ve Java ile çalışan Weblogic'i de kapatıp yeniden açtığımızda artık Türkçe karakterlerimiz düzgün şekilde gösteriliyordu:
LANG=en_US.UTF-8
Ha şimdi sistem değişkeni değişince başka bir uygulama bundan etkilenebilir derseniz sadece o Java uygulaması için bu ayarı yapabilirsiniz. Tek yapmanız gereken uygulamayı çalıştıran betiğin içinde java komutunun başına şunun eklenmesini sağlamak:
-Dfile.encoding=UTF-8
Weblogic 10.3.5 için $DOMAIN_HOME/bin/setDomain.sh dosyasında şu şekilde JAVA_PROPERTIES değişkeninin en başına bunu eklemek yetti:
JAVA_PROPERTIES="-Dfile.encoding=UTF-8 -D....."
Her betik yeni bir komut ortamı açtığı için burada tanımladığımız değişkenler betiğin bitiminde kaybolacaktır.
Bunun üzerine sistemin dil ayarlarına bakmayı düşündük ve
$ env
LANG=en_US
şeklinde bir dil tanımı olduğunu gördük. Solaris kurulumumuzdaki LANG sistem değişkenine bakan Java sadece ANSI en_US olarak bekliyordu gelen karakterleri. Bunu şu şekilde değiştirdiğimizde ve Java ile çalışan Weblogic'i de kapatıp yeniden açtığımızda artık Türkçe karakterlerimiz düzgün şekilde gösteriliyordu:
LANG=en_US.UTF-8
Ha şimdi sistem değişkeni değişince başka bir uygulama bundan etkilenebilir derseniz sadece o Java uygulaması için bu ayarı yapabilirsiniz. Tek yapmanız gereken uygulamayı çalıştıran betiğin içinde java komutunun başına şunun eklenmesini sağlamak:
-Dfile.encoding=UTF-8
Weblogic 10.3.5 için $DOMAIN_HOME/bin/setDomain.sh dosyasında şu şekilde JAVA_PROPERTIES değişkeninin en başına bunu eklemek yetti:
JAVA_PROPERTIES="-Dfile.encoding=UTF-8 -D....."
Her betik yeni bir komut ortamı açtığı için burada tanımladığımız değişkenler betiğin bitiminde kaybolacaktır.
Yorumlar
Yorum Gönder