Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

utf-8 karakter sorunu

mehmatt

0
Onaylı Üye
Üye
Katılım
25 Haziran 2012
Mesajlar
18
Açılan Konu
2
Tepki puanı
0
Merhaba arkadaşlar. Sitenizde yeniyim. Öncelikle çok detaylı bir php bilgim yok diyebilirim. Temel bir kaç fonksiyon biliyorum sadece. Sahip olduğum internet sitesinde bir arama motoru yaptım. Latin bölümünde sorun yok, ama utf-8 karakterlerimde problemler var.

Problemi basit bir dille anlatmak gerekirse konu başlıklarını strtolower ile küçük harfe çevirdim. latin alfabesi harflerinde bir sorun yok. gayet düzgün. ama bana gereken diğer alfabede karakterleri büyük veya küçük harfe göre bile farklı algılıyor. Başka bir deyişle alfabemin "A" harfini "a" olarak yazınca arama motoru sonuç vermiyor. Bunu da basite indirgemek için str_replace kullanıp tüm latin dışı karakterleri hallettim. Buraya kadar da tamam. Ama kullandığım dilde bir de tonlama problemi var. Türkçeye vuracak olursam işi, normalde arama motoruna "a" veya "â" tipinde üstünde tonlama işareti bulunan harflerin aynı sonucu vermesini, bu harfleri farklı algılamamasını istiyorum.

Yani ben a'da yazsam bana içinde a ve â bulunan, veya â'da yazsam içinde a ve â bulunan kelimeleri getirmesini, farklı bir harfmiş gibi algılamamasını istiyorum. Bir başka deyişle bu iki karakteri eşitlemek istiyorum. Hangi formülü kullanmam gerekli?

Şu ana kadar şöyle bir yol izledim. Araya nasıl bir kodlama sıkıştırmam lazım ki arama iki karakteri aynı algılasın?


if ($arama)
{

$arama = str_replace("%20"," ",$arama);
$arama = str_replace("A","a",$arama);
$arama = str_replace("Â","â",$arama);
...... (bu liste latin alfabesinde bulunmayan harfler için uzayıp gidiyor. A sizi yanıltmasın diğer harfler görünmeyebilir diye bu örneği verdim.)

$arama = strtolower($arama);



$string=$_GET['arama'];
 

CryForLive

0
Onaylı Üye
Üye
Katılım
31 Ocak 2012
Mesajlar
164
Açılan Konu
2
Tepki puanı
0
Konum
İstanbul
ayar dosyasından yanı config dosyası baglantı dosyası fılan oluşturmuşsundur ordan eğer mysql de karakter setini utf8 yaptıysan şunları ekle

mysql_query("SET CHARACTER SET utf8");

bunu ekle düzelmesi lazım birde sayfanın metasındaki dil kodlamasına bak
 

mehmatt

0
Onaylı Üye
Üye
Katılım
25 Haziran 2012
Mesajlar
18
Açılan Konu
2
Tepki puanı
0
işte o kadarını bilmiyorum. programcı değilim. yine de dediğiniz kodu bir kaç yere yazdıysam da olmadı. scripti yazan da ben değilim. bunun bir kodu var mı? yani php dosyası içinde 2 veya 3 karakteri aynı değere getirmek, eşitlemek istiyorum. böylece searche bu harflerden biri yazılınca benzer tümü sonuçlarda çıkması gibi... sanki çok basit bir şeymiş gibi geliyor ama ne kadar zormuş.
 

CryForLive

0
Onaylı Üye
Üye
Katılım
31 Ocak 2012
Mesajlar
164
Açılan Konu
2
Tepki puanı
0
Konum
İstanbul
config dosyasının içine o verdiğimi eklerseniz düzeleceğini düşünüyorum.
 

mehmatt

0
Onaylı Üye
Üye
Katılım
25 Haziran 2012
Mesajlar
18
Açılan Konu
2
Tepki puanı
0
dediğim gibi config dosyasını bilmiyorum ama tahmin ettiğim ana dosyalarda şu kodlar mevcut.

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

CryForLive

0
Onaylı Üye
Üye
Katılım
31 Ocak 2012
Mesajlar
164
Açılan Konu
2
Tepki puanı
0
Konum
İstanbul
config dosyası mysql kullanıcı adınızı şifrenizi girdiğiniz dosya
 

mehmatt

0
Onaylı Üye
Üye
Katılım
25 Haziran 2012
Mesajlar
18
Açılan Konu
2
Tepki puanı
0
anladım onu görmüştüm bir yerlerde bulup dediğiniz kodu bir yazayım. :) çok cahilim bu konuda kusura bakmayın. tekrar bilgilendireğim
 

mehmatt

0
Onaylı Üye
Üye
Katılım
25 Haziran 2012
Mesajlar
18
Açılan Konu
2
Tepki puanı
0
buldum. oranın en altında da aynen şu kodlar mevcut.

mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5;");
mysql_query("SET COLLATION_CONNECTION='utf8_unicode_ci';");
 

CryForLive

0
Onaylı Üye
Üye
Katılım
31 Ocak 2012
Mesajlar
164
Açılan Konu
2
Tepki puanı
0
Konum
İstanbul
Ne cahilliği öğrenme çabasındasınız bence en güzeli bu :)

ordaki latin5 leri utf8 yapın
 

mehmatt

0
Onaylı Üye
Üye
Katılım
25 Haziran 2012
Mesajlar
18
Açılan Konu
2
Tepki puanı
0
yaptım aramada bir değişiklik olmazken, yani tonlamalı harfleri aramada farklı görürken, sitedeki bir çok harf silindi. sanırım bunun çözümü kodlama hatasından değil...
 

CryForLive

0
Onaylı Üye
Üye
Katılım
31 Ocak 2012
Mesajlar
164
Açılan Konu
2
Tepki puanı
0
Konum
İstanbul
mysql oluştruran kişi tahminimce orayıda latin5 yapmış siz daha demin config dosyasında utf8 yaptıgınız yerleri latin5 yapın ve meta tagındaki utf8 kodunu silip İSO-8859-9 yapın
 

mehmatt

0
Onaylı Üye
Üye
Katılım
25 Haziran 2012
Mesajlar
18
Açılan Konu
2
Tepki puanı
0
header dosyasındakilerin orjinalini yaptım sanırım bunun çözümü search.php içinde. bir yabancıdan şöyle bir tavsiye almıştım ama dediğim gibi programcı olmadığım için tam olarak neyden bahsettiğini anlayamamıştım.

For example: if you have a rule that both 'a' and 'aa' are the same, then in your sql query you can say that "select * from sometable where myfield = 'a' or myfield = 'aa'.
 
Üst