Mysql ile arama yaptırırken ilk harfin Türkçe karakter olması sonucunda aramalar hatalı oluyor. Bu sorunu http://ruyatabiri.netne.net/ 'i yazarken çözmüştüm; ama nasıl çözdüğümü hatırlamıyorum, açtım baktım kodlara bir fark da bulamadım. Kimi yerde arama yaptığınız sayfanızla yaptırdığınız sayfanızın charsetleri aynı olsun denmiş ama ben iki sayfamı da UTF-8 (Bomsuz) olarak yazıyorum.

Veri tabanındaki karşılaştırmaları değiştirdim biraz ama ondan da düzelmedi yada ben ayarını tutturamadım.

Yardımcı olabilirseniz sevinirim. Teşekkürler.

soruldu: 11 Oca '13, 17:13

orhangazi's gravatar image

orhangazi
132172126
cevap kabul oranı: 0%

değiştirildi: 16 Oca '13, 03:21

CemIkta's gravatar image

CemIkta ♦
19.9k29125190


Evrensel bir sorun, yıllardır vardır. Yapman gereken çok basit, veritabanını oluştururken aşağıdaki gibi bir SQL deyimi kullanırsan tüm sorunların ortadan kalkacaktır.

// püf noktası collate anahtar kelimesi ile utf8_unicode_ci belirtmekte. Bu şekilde, veritabanına girilen tüm datalar unicode character setinde olacaktır.
CREATE DATABASE db_adı DEFAULT CHARACTER SET UTF8 COLLATE UTF8_UNICODE_CI;
permanent link

cevaplandı: 29 May '13, 15:21

O%C4%9Fuz%20%C3%87elikdemir's gravatar image

Oğuz Çelikdemir
2.0k52234
cevap kabul oranı: 13%

sizin bu jscript sayfasında tam şu satır:

__d("ErrorUtils",["Env"],function(a,b,c,d,e,f){var g=b('Env'),h=[],i=[],j=10,k=window.chrome&&'type' in new Error(),l=/^(\\s+at\\s)?((\\w+)?.*)(\\(|@)?.*(https?:[^:]*)(:(\\d+))?(:(\\d+))?/mg;function m(y){if(!y)return;y=y.split(/\\n\\n/)[0];l.lastIndex=0;var z=[],aa;while(aa=l.exec(y))z.push('    at '+(aa[3]||'')+(aa[3]?'(':'')+aa[5]+':'+aa[7]+(aa[9]?':'+aa[9]:'')+(aa[3]?')':''));return z.length?z.join('\\n'):y;}function n(y){if(!y){return {};}else if(y._originalError)return y;var z={line:y.lineNumber||y.line,message:y.message,name:y.name,script:y.fileName||y.sourceURL||y.script,stack:m(y.stackTrace||y.stack)};z._originalError=y;if(y.framesToPop){var aa=z.stack.split('\\n');aa.splice(0,y.framesToPop);z.stack=aa.join('\\n');if(/(\\w{3,5}:\\/\\/[^:]+):(\\d+)/.test(aa[0])){z.script=RegExp.$1;z.line=parseInt(RegExp.$2,10);}}if(k&&/(\\w{3,5}:\\/\\/[^:]+):(\\d+)/.test(y.stack)){z.script=RegExp.$1;z.line=parseInt(RegExp.$2,10);}for(var ba in z)(z[ba]==null&&delete z[ba]);return z;}function o(){try{throw new Error();}catch(y){var z=n(y).stack;return z&&z.replace(/[\\s\\S]*__getTrace__.*\\n/,'');}}function p(y,z){y=n(y);!z;if(i.length<j)i.push(y);for(var aa=0;aa<h.length;aa++)try{h[aa](y);}catch(ba){}}var q=false;function r(){return q;}function s(){q=false;}function t(y,z,aa,ba){var ca=!q;if(ca)q=true;try{var ea=y.apply(z,aa||[]);if(ca)s();return ea;}catch(da){if(ca)s();var fa=n(da);if(ba)ba(fa);if(y)fa.callee=y.toString().substring(0,100);if(aa)fa.args=String(aa).substring(0,100);var ga=g.nocatch||(/nocatch/).test(location.search);p(fa,ga);if(ga)throw da;}}function u(y){function z(){return t(y,this,arguments);}return z;}function v(y,z,aa){p({message:y,script:z,line:aa},true);}window.onerror=v;function w(y,z){h.push(y);if(!z)i.forEach(y);}var x={addListener:w,applyWithGuard:t,getTrace:o,guard:u,history:i,inGuard:r,normalizeError:n,onerror:v,reportError:p};e.exports=a.ErrorUtils=x;if(typeof __t!=='undefined')__t.setHandler(p);});
permanent link

cevaplandı: 12 Oca '13, 01:15

ercet00ilk's gravatar image

ercet00ilk
994435662
cevap kabul oranı: 11%

değiştirildi: 12 Oca '13, 05:58

Erdal Bey sanırım gözünüzden kaçırdınız. Arama kutusunun onkeyup olayı her gerçekleştiğinde form1, get metodu ile anahtar.php'ye gönderiliyor ve target='sol' framede de gösteriliyor. Aramaların facebook ile bir alakası yok. Teşekkür ederim cevabınız için.

(12 Oca '13, 05:01) orhangazi orhangazi's gravatar image

evet bir dalgınlıkla sanırım. düzelttim. :)

(12 Oca '13, 05:59) ercet00ilk ercet00ilk's gravatar image

Yine de bahsettiğiniz satırı nasıl kullanacağımı anlamadım :)

(12 Oca '13, 13:06) orhangazi orhangazi's gravatar image

siz nasıl kullanıyorsunuz bilmiyorum fakat içinde RegExp olan bir bu fonksiyon vardı. regExp= Regular expression= yani bir metni düzenlemek yada metin içerisinden belli kurallara uyan alt metinler elde etmek için kullandığımız bir dildir. :)

(13 Oca '13, 08:34) ercet00ilk ercet00ilk's gravatar image
1

Ben kullanmıyorum ama eklediğim facebook eklentisindendir galiba :). Cevabınız için teşekkürler.

(16 Oca '13, 05:51) orhangazi orhangazi's gravatar image

ne demek ben teşekkür ederim. :)

eğer biraz ilginiz varsa buradan kendinizin yazdığı bir validasyon ile de yapabilirsiniz. benim için karışık geldi. biraz karışıktır fakat eğer anlayabilirseniz yapamayacağınız denetleme/validasyon işlemi yok gibi..

bir kaç hazır yapılmış validasyon örneği ise burada.

(16 Oca '13, 06:07) ercet00ilk ercet00ilk's gravatar image
6 yorumdan 5 tanesi gösteriliyor hepsini göster

mysql_connect ve mysql_select_db den sonra sql ifadelerini calistirmadan once ( sorgular vs) asagidaki gibi kodlari calistirmak cozebilir. bir deneyin isterseniz.

    mysql_query("SET SESSION character_set_results = 'UTF8'");
    mysql_query("set SESSION character_set_client = 'UTF8'");
    mysql_query("set SESSION character_set_connection = 'UTF8'");

ayrica dosyanizin dediginiz gibi utf8 bomsuz olması ve sayfanizin da

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

olmasi da vs.

belki su da olabilir, sizin sayfanizin kodlamasi utf8 dir de, veritabani vs icin include ettiginiz dosyanin kodlamasi farkli olabilir, onu da kontrol edebilirsiniz.

permanent link

cevaplandı: 12 Oca '13, 04:28

tafali's gravatar image

tafali
4593412
cevap kabul oranı: 12%

değiştirildi: 12 Oca '13, 04:29

Dedikleriniz mantıklı; ama sorunu çözemedim. Veri tabanından latin5_turkish_ci de yapsam çözülmedi neyse, S-Ş, O-Ö, U-Ü harflerini aynı anda aratarak sorun yokmuş gibi göstereyim sorunu çözene kadar bari. Aklıma gelen en iyi çözüm bu şimdilik.

Bu arada, karşılaştırmayı latin5_turkish_ci yaptığımda phpMyAdmin içinde arama yapınca sorun yok, gayet güzel arıyor ama sayfamdan arama yapınca sorunlu tabi. Sorgum şöyle: SELECT * FROM adres_defteri_kisi WHERE adi LIKE 'ö%';

(12 Oca '13, 05:38) orhangazi orhangazi's gravatar image

include ettiğim sayfam sorgulara geçmeden önce mysql_query("SET NAMES UTF8"); sorgusunu çalıştırıyor böylece Türkçe karakter sorunu olmuyor sayfada, ama aramada oluyor. yani ö, ç, ş gibi harflerle başlayan aramalar hatalı...

(12 Oca '13, 05:38) orhangazi orhangazi's gravatar image

yukaridakilerle beraber ek olarak bir de karsilastirmayi utf8_unicode_ci yapin isterseniz, bende bu sekilde cozulmustu baska unuttugum birsey yoksa

set names in yanina yukaridaki 3 unu de eklediniz mi?

(12 Oca '13, 10:26) tafali tafali's gravatar image

bir de sayfamdan arama yaparken demissiniz ya, aranacak ifadeyi sayfadan (browserdan) gondermeyip, yukaridaki sorguyu sayfaya sabit yazip sayfayi cagirip bir deneyin hala sorun olacak mi. "ö" yu browserdan gondermek yerine sayfaya sorguyu o sekilde gömerek calistirin. belli olmaz belki problem serverin otesinde degil berisinde olabilir.

(12 Oca '13, 10:40) tafali tafali's gravatar image

Hepsini denedim fakat hâlâ aynı.

(12 Oca '13, 13:30) orhangazi orhangazi's gravatar image

connection yapıldıktan sonra

mysql_set_charset('utf8',$con); satırını eklemeyi deneyin.

bir de sorgularda SELECT * FROM TABLO WHERE kelime like N'%KELİME%' şeklinde arama yaptırmalısınız.

www.etkenyazilim.com

permanent link

cevaplandı: 12 Oca '13, 04:36

sibelakyigit's gravatar image

sibelakyigit
172137
cevap kabul oranı: 15%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×168
×144

Soruldu: 11 Oca '13, 17:13

Görüntüleme: 4,101 kez

Son güncelleme: 29 May '13, 15:21

powered by BitNami OSQA