ASP türkçe karakter sorunu - Access veya Mysql

ASP türkçe karakter sorunu - Access veya Mysql
ASP türkçe karakter sorunu - Access veya Mysql

4 yıldır artık eski bir kodlama dili olan ASP ile içli dışlı proje üreticisi olarak türkçe karakterler ile yaşanan zorluklardan bıkan arkadaşlara birkaç tavsiye ve kodlama yöntemi ile bu sorunlardan tamamen kurtaracağız.

Bir ASP sayfa ve veritabanı arasında veri alışverişinde sonucun başırıyla gerçekleşmesi için hem veritabanının hem aktarım yolunun hem de sonuç kısmı olan sayfanın kodlama dili rol oynar.

İlk dönemler ASP de türkçe karakter sıkıntılarında öyle usanmıştım ki, insanın ilim bilim aşkını öldürürcesine..

Öncelikle şöyle başlayalım;

Veritabanına hiçbir zaman ç-Ã?-ö-Ã--ÄY-Äž-ü-Ão-ı-Ä° gibi veya buna benzer bol soru işaretli veriler kaydetmeyin. Eğer istamsiz olarak oluyor, düzeltmek istiyor düzeltemiyorum diyorsanız panik yok, bu yazıda çözümü var. Ama bunu göre göre ilerleyip, veritabanında öyle ama ben onu sayfada replace komutu ile düzelttiriyorum diyorsanız projeniz beş para etmez, yapmayın. 

Çünkü evet, sunum sayfasında düzelttirirsiniz bir şekilde.. Ama veritabanında bir arama yapmaya kalktığınızda arama kelimelerini de mi replace yapacaksınız? Jquery nesnelerinde arama yaparken? Kısacası o işten hayır gelmez.

Hatasız bir proje için sistemdeki tüm işleyişi UTF-8 Unicode ile sürdüreceğiz.

1) Tüm çıkış verilerini UTF-8 yapıyoruz.
<%
Response.ContentType = "text/html" 
Response.Charset = "UTF-8"
%>


Eğer Access veritabanı kullanıyorsanız karakter kodlarınızın altına aşağıdaki satırları da ilave etmeniz gerekiyor.
<%
Response.Codepage = 65001
%>


Örnek Access veritabanı ile bağlantı :
<%
Response.ContentType = "text/html" 
Response.Charset = "UTF-8" 
Response.Codepage = 65001 
Set baglanti = server.CreateObject("adodb.connection") 
baglanti.open "Provider=Microsoft.Jet.oledb.4.0;Data Source=" & server.Mappath("veritabanim.mdb")
%>


Eğer Access değil de MySQL veritabanı kullanıyorsanız veritabanı bağlantı kodunuzun altına aşağıdaki satırları da ilave etmeniz gerekiyor.
<%
baglanti.Execute "SET NAMES 'utf8'" 
baglanti.Execute "SET CHARACTER SET utf8" 
baglanti.Execute "SET COLLATION_CONNECTION = 'utf8_bin'"
%>


Örnek Mysql Bağlantı :
<%
Response.ContentType = "text/html" 
Response.Charset = "UTF-8" 
Set baglanti = Server.createObject("Adodb.Connection") 
baglanti.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER="server ip"; UID="kullanici_adi "; pwd="parola"; db="veritabani_adi";" 
baglanti.Execute "SET NAMES 'utf8'" 
baglanti.Execute "SET CHARACTER SET utf8" 
baglanti.Execute "SET COLLATION_CONNECTION = 'utf8_bin'"
%>


2) Arayüz kodlama dili mutlaka UTF-8 olmalı.

Meta etiketi olarak : Sayfa ile arasında yapıştırın.

3) Veritabanı UTF-8 - general_ci olmalıdır. (Bu özellikle MySQL kullananlar için geçerlidir.)

Bu işlemleri yaptıktan sonra hala hata alıyorsanız çok yüksek ihtimalle ASP dosyanız UTF-8 değildir. 
ASP Dosyanıza sağ tıklayın > Birlikte aç > Not defteri 
Yolu ile not defterinde açın. Daha sonra ise;
Dosya menüsünden > Farklı kaydet > Kodlama dili ni UTF-8 olarak seçip kaydedin. 

Artık hiçbir sorununuzun kalmaması gerekiyor.

Unutmayın; temiz ve düzenli bir kodlama proje hayatını ve gidiş hattını uzatır.

Umarım yardımcı olabilmişimdir.
İyi çalışmalar. 

Bugün bir iyilik yap, mesela bu yazıyı paylaş :

SİZİN İÇİN ÖNERİLEN YAZILAR

YORUMLAR

  1. profil Furkan dedi ki:

    Allah razı olsun umudum tükenmişken sayenizde buldum çözümünü :)

Yorum yap

Geçersiz bir mail adresi girdiniz. Lütfen tüm zorunlu alanları doldurun. *