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. 

Hafzullah Yıldırım

Merhaba ben Hafzullah! Voiser.net, Hesaplus.com projelerinin kurucusuyum. 2015'te Kocaeli Üniversitesi'nden mezun oldum ve devamında Yüksek Lisans eğitimimi tamamladım. 2017'de çalıştığım şirketten istifa ederek kendi yazılım firmam Hafzullah.com.tr'yi kurdum.

Toplam 4 Yorum

Furkan
Furkan

06.11.2015 16:27:38

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

Hafzullah Yıldırım
Hafzullah Yıldırım

06.11.2015 19:29:57

Ne mutlu bana o halde. İyi çalışmalar.

Özer
Özer

09.03.2017 01:19:03

Hocam selamlar, Sitenizi sürekli takip ediyorum, ellerinize emeğinize sağlık. Hala ilgileniyor musunuz bilmiyorum ama bu başlıkla alakalı bir sorum olacaktı. Macbook PRO kullanıyorum, dolayısıyla not defteri yok, dreamweaver cs6 da yazıyorum. Şimdi dediğiniz gibi tüm db yi utf8 general a getirdim, site de dediğiniz gibi tr_TR ve UTF-8. Ancak yine de mysql den veri çekerken veya veri gönderirken ÖÇÜöçü tamam ama şiğüıŞİĞÜ karakterlerinde ??? çıkıyor sadece. Hatta yanlış söyledim, general yapınca ÖÇÜöçü de çıkmıyor ÃÇŎİĎÌöçşığü falan gibi şeyler çıkıyor. Latin5'i denedim, bir de utf turkish i, onlarda ÇÖÜ ve öçü düzgün görüntülenip yüklenebiliyor. Yardımcı olursanız gerçekten sevinirim, resmen tıkandım burada.. İyi çalışmalar dilerim.

Hafzullah Yıldırım
Hafzullah Yıldırım

09.03.2017 08:54:00

Merhabalar Özer; ASP de 3 aşamalı dil kodlaması vardır. Veritabanı UTF8 olarak yapılandırılmalı. Kodlama yapılan Asp dosyası UTF8 olmalı. Son olarak veritabanı bağlantı kodları UTF8 ile sağlanmalı. Bu üçünü sağlarsan hiçbir karakter sorunu yaşamazsın. Japonca karakterler de Arapça karakterlerde kullanırsın. Bu üçünü de yapıp, hala sorun yaşaman imkansız.

Özer
Özer

17.03.2017 17:11:18

öçşığüÖÇŞİĞÜ yerine öçşığüÖÇŞİĞÜ gözükmekte.

Hafzullah Yıldırım
Hafzullah Yıldırım

25.03.2017 22:46:16

Herşeyi aynen anlattığın gibi yapıyorsan sunucu okuması problemlidir. O da htaccess veya web.config dosyası içeriğinde olması lazım. Kontrol et istersen bir.

Ömer ÖZBEK
Ömer ÖZBEK

23.02.2019 18:14:13

Hay ALLAH Razı Olsun Kardeşim :)) Sayende Sorunumu Çözdüm

Sende Yorum Yap

Benzer Yazılar

Voiser Kimin?
Voiser.net Nedir?
Voiser Yeni Ofisine Geçti
İzmit'te Pandemi (Tam Kapanma)
Bedelli Askerliğin Tarihçesi