Anasayfa / Hata Çözümleri / Android MySQL Türkçe Karakter Sorununun Çözümü

Android MySQL Türkçe Karakter Sorununun Çözümü

Merhaba. Üzerinde uğraştığım bir Android projesinde Php kullanarak uzak sunucudaki bir mysql veritabanına kayıt atarken ve kayıt çekerken Türkçe karakterleri, soru işareti (?) ile kaydettiğini gördüm. Ayrıca sorgulama yaparken de mevcutta kayıt olduğu halde sorgu sonucunda kayıt dönmediğini ve hataya takıldığını farkettim.

Yaklaşık 2 gün boyunca araştırdım ve birçok farklı kombinasyon denememe rağmen sonuç elde edemedim. Sonunda bir blogda çözüm buldum, unutmadan not etmek ve başkalarına da yardımcı olmak için bu yazıyı yazma ihtiyacı hissettim. Her sitede farklı çözümler mevcut fakat ben ilk çözümüm bu olduğu için daha fazla kurcalamak istemedim.

Adımlar

1- İlk olarak tüm Php dosyalarımızı NotePad++ programında açıyoruz ve üst menüden Kodlama -> “BOM Olmadan UTF8 Olarak Kodla(UTF-8 Without BOM)” seçeneğini seçip dosyayı tekrar kaydederek tüm Php dosyalarını host veya sunucumuza tekrar atıyoruz. Siz tüm Php dosyaları için bunu yapmalısınız. Özellikle sorgularınızın olduğu Php dosyasında.

2 – Hangi Php dosyasında bağlantı oluşturuyorsak (ben db_connect.php dosyasında yaptım) o dosyayı açıp aşağıdaki kodu ekliyoruz ve bu dosyayı tekrar uzak sunucumuza atıyoruz.

Bağlantı oluşturduğumuz satırın hemen altına ekleyelim.

3 – Tüm veritabanı, tablo ve kolonlarımızı utf8_general_ci karakter kodlamasında oluşturuyoruz. Tablomuz bu formatta oluşturulursa kolonları da bu formatta oluyor.

Eğer var olan bir veritabanınız veya tablonuz varsa bunun character encoding‘ini aşağıdaki sorguyla değiştirebilirsiniz.

İster veritabanını silip tekrar oluşturun isterseniz hem veritabanı hem tablonuzu üstteki sorguyla güncelleyin. Bu işlemden sonra kolonlarınıza tek tek bakmanızı öneririm. Kolonların Enconding’inin de utf8_general_ci olduğundan emin olun. Aşağıda veritabanı, tablo ve kolon için encoding formatının son şeklini gösteriyorum.

Veritabanı encoding:

mysql türkçe karakter sorunu

Tablo encoding:

mysql türkçe karakter sorunu

Kolon encoding:

mysql türkçe karakter sorunu

4 – Son olarak Android kodunuzdan, Php dosyasını çağırma işlemini POST  tekniği ile yapıyorsanız “UTF-8” parametresini Android kodunuza aşağıdaki gibi ekleyiniz.

Eğer GET  tekniğini kullanıyorsanız :

kodunu ekleyiniz.

Eğer Php ile değil de başka bir formatla bağlanıyorsanız 2.adımdaki gibi CHARACTER SET değeri set etmelisiniz. Php’de böyleydi, her dilde farklıdır. Eğer Android değil de başka bir platformdan bağlanıyorsanız da kodunuzun içerisinde ilgili Character Encoding belirleme kodunu kullanmalısınız. Android için bu 4.adımda yapıldı.

Yardımcı olabildiysem ne mutlu. Sorunuz olursa ya da bu şekilde sorunu düzeltirseniz yorumda belirtmenizi isterim.

Mehmet Kirazlı

İstanbul Eyüp'te ikamet ediyorum. Giresun Alucra'lıyım. Bilgisayar Mühendisliği bölümünden 2013 yılında mezun oldum. "Yeni Başlayanlar için Java 8" kitabının yazarıyım. Şu anda özel bir firmada Mobil Yazılım Geliştirme Uzmanı olarak çalışıyorum.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir