Türkçe karakter sorunu

87 views
Skip to first unread message

murat şeker

unread,
Jun 11, 2009, 3:47:41 AM6/11/09
to ajaxnedir
merhaba arkadaslar
ajaxa yeni basladım. bir linke tıkladığımda belirli bir DIV de
sitediğim sayfayı açabiliyorm. buraya kadar hersey normal ama açılan
sayfada türkçe kararkterler çıkmıyor. bu konuda yardımcı olabilicek
biri var mı?

Volkan Özçelik

unread,
Jun 11, 2009, 5:03:39 AM6/11/09
to ajax...@googlegroups.com
Selam Murat,

>
>sayfada türkçe kararkterler çıkmıyor. bu konuda yardımcı olabilicek biri var mı?
>

request ve response'da UTF-8 karakter seti kullanırsan sorun kalmaz.
Tüm dosyalarının, gelen ve giden isteklerin ve veritabanında kaydolan verilerin UTF-8 olduğundan emin ol.

Yardımcı olması dileğimle,
-- 
Volkan Ozcelik
+> Front End Architect, MessengerFX : http://www.messengerfx.com/
+> I tweet: http://twitter.com/linkibol
+> linkibol.com - in seek for quality links : http://www.linkibol.com/
+> my blog (in Turkish) : http://www.fikribol.com/donkisot/
+> Sardalya JavaScript Library : http://www.sarmal.com/sardalya/

burhanettin erdinç

unread,
Jun 11, 2009, 8:40:00 AM6/11/09
to ajax...@googlegroups.com

Evet ya volkanın dediği gibi yaparsın yada kendin bir fonksiyon yazarak karekterleri türkçeye çevirirsin.

Feyyaz Malkoç

unread,
Jun 19, 2009, 4:16:41 AM6/19/09
to ajaxnedir
Arkadaşlar bu sorunu ben de yaşıyorum.Ajax a da yeni başladım çözümü
tam olarak anlatabilecek arkadaş varmı?

Ajax ı asp ile kullanıyorum.

Volkan Özçelik

unread,
Jun 19, 2009, 5:08:54 AM6/19/09
to ajax...@googlegroups.com
Selam Feyyaz

"
request ve response'da UTF-8 karakter seti kullanırsan sorun kalmaz.
Tüm dosyalarının, gelen ve giden isteklerin ve veritabanında kaydolan verilerin UTF-8 olduğundan emin ol.
"

Alıntısı dışında nasıl bir yönlendirmeye ihtiyacın var?
sunucu, istemci ve veritabanını UTF-8 'e ayarlarsan sorunun kalmayacaktır.

Aşağıdaki linkin de yararlı olacağı düşüncesindeyim:

volkan

unread,
Jun 19, 2009, 5:15:20 AM6/19/09
to ajaxnedir
Çok özür dilerim.

Google linki yerine "let me google that for you" linkini eklemişim.

http://www.google.com.tr/search?hl=tr&q=ajax+utf-8+"türkçe+karakter+sorunu"&btnG=Google'da+Ara&meta=&aq=f&oq=

Yardımcı olması dileğimle.

Samet Ceylan

unread,
Jun 19, 2009, 6:01:16 AM6/19/09
to ajax...@googlegroups.com
Ajax query oluştururken tüm değerleri şu function dan geçirmen gerek. Örneğin;


function temizle(entery)
{
    entery=entery.replace(/\n/g,"");
    entery=escape(entery);
    return entery;
}


function urunkaydet(x)
{

var query="";
query+="id="+$("id").value+"&";
query+="katid="+$("katid").value+"&";
query+="baslik="+temizle($("baslik").value)+"&";
query+="kaytarih="+temizle($("kaytarih").value)+"&";
query+="markaid="+$("markaid").options[$("markaid").selectedIndex].value+"&";
query+="urunaciklama="+temizle($("urunaciklama").value)+"&";
query+="stok="+temizle($("stok").value)+"&";
query+="maxfiyat="+temizle($("maxfiyat").value)+"&";
query+="parabirim="+temizle($("parabirim").value)+"&";
query+="anasayfavitrin="+temizle($("anasayfavitrin").value)+"&";
query+="kategorivitrin="+temizle($("kategorivitrin").value)+"&";
query+="aramavitrin="+temizle($("aramavitrin").value)+"&";
query+="teminsuresi="+temizle($("teminsuresi").value)+"&";
query+="durum="+temizle($("durum").value)+"&";
query+="sira="+temizle($("sira").value)+"&";

JXP(1,x,"urunedit.asp?islem=kaydet",query);
}


Verileri aldığın sayfanın başınada aşağıdaki kodu yapıştırırsan türkçe karakter sorunu falan yaşamazsın.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1254"%>
<%
Session.Timeout = 30
Session.LCID = 1055
Session.CodePage = 1254
server.ScriptTimeout=1440
Response.CharSet = "iso-8859-9"

Samet CEYLAN

 
0539 589 04 05
same...@hotmail.com
sa...@e-cyln.com
www.e-cyln.com
 






> Date: Fri, 19 Jun 2009 01:16:41 -0700
> Subject: [ajaxnedir] Re: Türkçe karakter sorunu
> From: feyyaz...@gmail.com
> To: ajax...@googlegroups.com

Volkan Özçelik

unread,
Jun 19, 2009, 9:13:36 AM6/19/09
to ajax...@googlegroups.com
Selam Samet,


2009/6/19 Samet Ceylan <same...@hotmail.com>

Ajax query oluştururken tüm değerleri şu function dan geçirmen gerek. Örneğin;


fonksiyonda escape yerine encodeUriComponent metodunu kullanman daha sağlıklı sonuçlar verir.

Bununla birlikte bu yaklaşımı sağlıklı bulmuyorum çünkü:

- encode edilen string olması gerekenden çok daha fazla yer kaplar veritabanında. 
- ü gibi Türkçe bir karakteri harfini veritabanında %FC şeklinde kaydedeceğin için gerek basit gerekse FULL TEXT arama yapamazsın, depoladğın bu alana göre raporlama / sıralama vb. yapman olanaksızlaşır.

Ajax'ta karakter sorununun genel geçer tek çözümü vardır: Encoding olarak sunucu, istemci ve veritabanında "utf-8" kullanmak.

Yamuluyorsam düzeltin.

Sevgiler,
-- 

OZHAN TR

unread,
Jun 19, 2009, 9:22:48 AM6/19/09
to ajax...@googlegroups.com
 
 vallaha ben fonksiyon kullanıyorum güzel Türkçemiz bozulmuyor ç,ş,ı,ö,ğ güzel güzel cıkıyor
 

Date: Fri, 19 Jun 2009 16:13:36 +0300

Subject: [ajaxnedir] Re: Türkçe karakter sorunu

Volkan Özçelik

unread,
Jun 19, 2009, 9:48:03 AM6/19/09
to ajax...@googlegroups.com
 
 vallaha ben fonksiyon kullanıyorum güzel Türkçemiz bozulmuyor ç,ş,ı,ö,ğ güzel güzel cıkıyor
 

Tamam ya, benim aklım başka bir yere gitmiş :) 
AJAX verisini encode edip göndermek zaten bir gereklilik. Ve bunu ortalıktaki AJAX kütüphanelerinin tamamı yapıyor. 

Örneğin sardalya'da bu işlem:

_this=_TextFormatter.prototype;

_this.escape=function(strText)
{
	return encodeURIComponent(strText);
};
...

_this.addField=function(strField,strValue)
{
	this._fields.push(strField);
	this._values.push(TextFormatter.escape(strValue));
};

metodlarıyla hallediliyor. 

İkinci dikkat edilmesi gereken şeyse veritabanı ve sayfanın aynı encoding'i kullanması.

utf-8 kullanmadan da Türkçe karakter sorununu çözebilirsiniz. Bununla birlikte UTF-8 kullanırsanız daha az başınız ağrır. 

Sizin kodunuz CP1254 Türkçe codepage'e göre yazılmış olabilir, fakat kullanacağınız üçüncü şahıs bir bileşen sorun çıkartabilir. Hem sunucu hem de client tarafına istemediğiniz bir sürü replace ve convert fonksiyonu yazmak zorunda bulursunuz kendinizi.

benden nasihat:

Eğer kullanabiliyorsanız UTF-8 kullanın.

Eğer kullanamıyorsanız encoding'lerinizin tutarlı olmasına bakın ve dua edin Türkçe karakter sorununuz çıkmasın ;)

Samet Ceylan

unread,
Jun 19, 2009, 10:49:49 AM6/19/09
to Ajax Nedir
Yanılıyorsun çünkü text içindeki verileri urlye yazdığında farklı olur html karekterlerine dönüşür ancakquerystring ile aldığında düzgündür. yani sen o fonksiyondan geçirip diğer asp de qoerystring ile aldığın zaman değişen bişey olmuyor. ü yine ü oluyor. karakter sorunundan kurtuluyorsun.


Samet CEYLAN

 
0539 589 04 05
same...@hotmail.com
sa...@e-cyln.com
www.e-cyln.com
 







Subject: [ajaxnedir] Re: Türkçe karakter sorunu
Date: Fri, 19 Jun 2009 16:22:48 +0300
</html



Windows Live™ ile e-posta kutunuzdaki işlevlerin çok ötesine geçin. Diğer Windows Live™ özelliklerine göz atın.

Volkan Özçelik

unread,
Jun 19, 2009, 11:27:04 AM6/19/09
to ajax...@googlegroups.com
Selam Samet,

5 seneyi aşkın süredir farklı konumlarda (yazılım mimarı, bilişim direktörü, proje lideri, developer vb.) sayısız uygulama geliştirmiş ve yönetmişimdir. Bu sürecin bana olaylara daha dışardan bakma yetisi kazandırdığını söyleyebilirim. 

2009/6/19 Samet Ceylan <same...@hotmail.com>
Yanılıyorsun

haklısın.
 
çünkü text içindeki verileri urlye yazdığında farklı olur html karekterlerine dönüşür ancakquerystring ile aldığında düzgündür.

O kısmını biliyorum. Yukarıda da belirrtiğim gibi farklı bir konuya kaymış düşüncelerim. Yanlış anlaşıldıysam kusura bakmayın.

prototype, jquery, dojo ... gibi kütüphanelerin tamamı bu işlemi kullanıcı farkında olmadan arka planda hallediyor zaten ;)

Başka bir deyişle form verisini encode (escape) etmek "gerek şart". 
Bununla birlikte form verisini encode etmek "yeter şart" değil.

Eğer request, response ve db encodingleri birbirini tutmazsa sorun çıkartır.

UTF-8,  encoding 3rd parti entegrasyon, globalizasyon, lokalizasyon vb. nedenlerle, mümkün olan her durumda tercih edilmesi gereken bir encoding türü. Yoksa ürünün ilerleyen fazlarında sorunlar yaşamanız olası.

Web uygulaması geliştirirken sadece şu anı değil, ürün hayat döngüsünün tamanını göz önünde tutmak gerekli.
 
ü yine ü oluyor. karakter sorunundan kurtuluyorsun.

Evet. şimdilik kurtuluyorsun ;)

just my 2c (benden söylemesi)

Sevgiler,
Reply all
Reply to author
Forward
0 new messages