18 Nisan 2007 – 15:29
Tomcat, JSP, MySQL kullanarak web sitesi yapmaya çalışırken malum Türkçe karakterleri sağlıklı bir şekilde görüntüleyebilmek ne yazık ki problemli bir iş. Yeterince tecrübeli ya da en azından şanslı değilseniz orada burada bir ton ayar yapmak gerekecektir. Bu yazıda Tomcat, HTML, JSP, MySQL için yapmanız gereken ayarları yazdım.
Çözümde karakter seti olarak ISO-8859-9 gibi setler yerine UTF-8 kullanılmıştır.
Temel Değişiklikler
Öncelikle dikkat etmeniz gereken husus internet sayfalarının karakter kodunu UTF-8 olarak belirlemek olmalı. Yani:
1. HTML sayfalarınızda HEAD tag’ı içerisinde aşağıdaki satır bulunmalı
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
2. JSP dosyalarının en tepesine de aşağıdaki satır gelmeli.
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
3. Son olarak dosyalarınızı UTF-8 formatında kaydetmelisiniz.
Gerekli Veritabanı Ayarları
1. Mysql JDBC Connection
MySQL JDBC bağlantısını şu şekilde yazmalısınız:
"jdbc:mysql://localhost/veritabaniadi?"+
"user=kullaniciadi&pass=sifre&useUnicode=true&characterEncoding=UTF-8";
yani bağlantıya
useUnicode=true
characterEncoding=UTF-8
parametreleri ekleniyor
2. veritabanı
veritabanındaki tüm collation’lar (karşılaştırma) utf8-turkish_ci
tablo char-set’leri de utf8 olmalı
3. my.ini
my.ini dosyasında şöyle bir satır olmalı
default-character-set=utf-8
Gerekli servlet ayarları
1. String çevrimi
stringleri alırken şöyle bir karakter çevrimi yapmalı
str=new String(str.getBytes("UTF-8"), "UTF-8");
2. Servlet
servlet’in başında da şu satır olmalı
request.setCharacterEncoding("UTF-8");
3. Tomcat
Tomcat get metoduyla gönderilen verilerde sorun çıkarabilir. bu sorunu çözmek için server.xml dosyasında connector tag’i içerisinde URIEncoding=”UTF-8″ parametresi eklenmeli.
Ayrıntılar şurada: http://weblogs.java.net/blog/joconner/archive/2005/07/charset_traps.html
Diğer
1. Encode için javascript
get metoduyla gönderirken utf-8 karakter çevrimi yapmak istiyorsan aşağıdaki script’i kullanabilirsin. anahtar nokta ‘escape’ fonksiyonu.
function processForm(form) {
var nickname = escape(form.nickname.value);
window.location = window.location + "?nickname=" + nickname;
}
Çözüm için aşağıdaki sayfadan faydalandım. Burada yazdıklarımın dışında Java Locale sınıfı kullanımı gibi başka bazı bilgiler için bu sayfaya bakabilirsiniz.
http://www.teknoturk.org/docking/yazilar/tt000144-yazi.htm
Bu kadar sanırım.
- atakan's blog
- Yorum yazmak için giriş yapın veya kayıt olun
Feb19





