İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

utf-8 karakter sorunu

mehmatt

0
İyinet Üyesi
Katılım
25 Haziran 2012
Mesajlar
18
Reaction score
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
İyinet Üyesi
Katılım
31 Ocak 2012
Mesajlar
164
Reaction score
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
İyinet Üyesi
Katılım
25 Haziran 2012
Mesajlar
18
Reaction score
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ş.
 

mehmatt

0
İyinet Üyesi
Katılım
25 Haziran 2012
Mesajlar
18
Reaction score
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"/>
 

mehmatt

0
İyinet Üyesi
Katılım
25 Haziran 2012
Mesajlar
18
Reaction score
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
İyinet Üyesi
Katılım
25 Haziran 2012
Mesajlar
18
Reaction score
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';");
 

mehmatt

0
İyinet Üyesi
Katılım
25 Haziran 2012
Mesajlar
18
Reaction score
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
İyinet Üyesi
Katılım
31 Ocak 2012
Mesajlar
164
Reaction score
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
İyinet Üyesi
Katılım
25 Haziran 2012
Mesajlar
18
Reaction score
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'.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst