Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
5
Cevap
5429
Tıklama
0
Öne Çıkarma
Php (Ajax) türkçe karakter problemi
Ç
19 yıl
Teğmen
Konu Sahibi

Arkadaşlar dosya aşağıda türkçe karakter problemini çözemedik yardımcı olabilecek biri var mı?

<center>

<?php
include("../data/db_connection.php");
include("../data/classes.php");
$result = mysql_query("select * from haberler where id=".$_GET[id]);
$row = mysql_fetch_array($result);


?>
<body leftmargin="0" rightmargin="0" topmargin="0">

<tr>
<td align="center"> <h3><? echo $row['baslik']; ?></h3> </td>

<tr><td align="justify"><img src="haber/haberresim/<? echo $row['resim']?>
" align="left"> <? echo "<div style=background-color:white; padding:8px;>".
cut_str(str_replace("\\", "", $row[haber]),200) ?>
</td>
</tr>
</table>

</body>
....................................


<?
ob_start();
header("Content-Type: text/xml; charset=iso-8859-9");
?>
<script language="javascript" type="text/javascript">
function my_ax(id) {
var ax = null;
var cc = document.getElementById('haber_pano');
if(window.XMLHttpRequest) {
ax = new XMLHttpRequest();
}
if(window.ActiveXObject) {
ax = new ActiveXObject("Microsoft.XMLHTTP");
}
ax.onreadystatechange = function () {
if(ax.readyState==4) {
if(ax.status == 200) {
cc.innerHTML = ax.responseText;
return true;
}
}
}
ax.open('get', 'haber/ajax_haberoku.php?id='+id, true);
ax.send(null);
}
</script>
<body bottommargin="0" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">
<?php
include("data/db_connection.php");
include("data/classes.php");
$p=1;
extract($_GET);
$p=(($p-1)*4);
$result = mysql_query("select * from haberler order by tarih desc limit $p,4");
?>


<table width="430" border="0" align="center" cellpadding="0" cellspacing="0" bordercolorlight="#CCCCCC" bordercolordark="#CCCCCC" style="border-collapse: collapse;">
<tr>
<td>
<div id="haber_pano" style="width:430px; height:310px;overflow: auto;"><center><? include ('degisenresim.php');?></img></center></div>
</td>
<tr>
<td width="400" > <?
$result = mysql_query("select * from haberler ");
while($r = mysql_fetch_array($result)) {
?>
<li type="square" style="color:#CC0000"><a href="haber/ajax_haberoku.php?id=<?=$r[id] ?>"onClick="newWindow(this.href, 'popup', 600, 500, 0, 1, 0, 0, 0, 1, 0); return false;" target="_blank"><div onMouseOver="my_ax(<?=$r[id]?>);"><?= " <b>  ".str_replace("\\", "", $r[baslik])." </b><em>".$r[tarih]."</em></div></span>";?>
</div>
</a></li> <img src="haber/line.jpg" width="400" height="1">

<?
}
?>
</td>
</tr>
</table>
<? ob_flush() ?>
............


Yardım...

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



T
19 yıl
Onbaşı

türkçe karakter sorununu çözmek için ajax ile çağrılan php sayfasının başına
header("content-type: application/x-javascript; charset=iso-8859-9");


Bu mesaja 1 cevap geldi.
T
19 yıl
Çavuş

quote:

Orjinalden alıntı: tymite

türkçe karakter sorununu çözmek için ajax ile çağrılan php sayfasının başına
header("content-type: application/x-javascript; charset=iso-8859-9");



bu tamamen dogru bir yaklaşım fakat eksiklik var.
bu kod sadece html sayfalarda çok güzel işe yarıyor.
php sayfalarda fazla işe yaramıyor. ama arkadaşımız güzel örnek vermiş
arkadaşa teşekkür ediyorum

nasıl çözersiniz

genellikte php de yada php nukede bu tür türkce karakter sorunu yaşanıyor.
bunların çözümleri çok kişiye ve hostta göre degişiyor.

myadminden sgl yüklerken ilk yapmanız gereken yüklemeden önce türkce iso-8859-9
seçmeniz ama çogu hostlarda bu yok. onun yerine utf8_bin aynı işi görüyor.
bu seçenegi yaparak. türkce sorunu aşabilirsiniz.

php nuke de ise.sgl nizi hangi dille bilgisayarınıza kayıt etmişseniz. aynı dilde
tekrar yüklüyerek bu sorun tamamen kalkacaktır..

diger bir yol ise charset=x charset=x
gibi tablolar varsa charset değerleri sil buda ayrı bir çözüm olacaktır.

kolay gelsin


Bu mesaja 1 cevap geldi.
B
19 yıl
Çavuş

mysql_query('set names utf8'); - mysql iletişimini utf8 yapar
mysql_query('set names latin5'); - mysql iletişimini Türkçe yapar

tabloların collation'larının da aynı zamanda UTF8 ya da Türkçe olması gerekir.





< Bu mesaj bu kişi tarafından değiştirildi B@TT@L -- 20 Ekim 2006; 17:55:40 >
Bu mesaja 1 cevap geldi.
M
19 yıl
Binbaşı

MySQL tablolarından kaynaklanan bir sorun bu.

Asagidaki kodu eklersen sorun kalmayacaktir.

mysql_query("SET NAMES 'latin5'"); 
mysql_query("SET collation_connection = 'latin5_turkish_ci'");


Bu mesaja 1 cevap geldi.
F
19 yıl
Çavuş

data içerisindeki tablolardaki karakter setlerini değiştirseniz dahi ajax ile veri alıp dataya yazdırırken türkçe karakter sorunu yine yaşarsınız bunu önlemek için bir header yazılabilir header("Content-Type: text/xml; charset=ISO-8859-9"); yukarıda verilen örnek gibi ancak veri post edildiği dataya yazılmadığı sürece türkçe karakterler gözükür fakat veritabanıma gelen verilerimi yazdırmak istiyorsam ne yapıcam ? Bu durumda iconv komutundan faydalınırız ajax ile gelen veriler UTF-8 formatında gelir bunu ISO-8859-9'a çevirmek için şöyle bir fonksiyon yapabiliriz
function turk($veri) { 
$veri = iconv("UTF-8", "ISO-8859-9", $veri);
return $veri;
}

iconv yüklü olmayan sunucularda mb_convert_encoding komutuda iş görür örneğin
$metin = mb_convert_encoding($_POST['metin'], "ISO-8859-9", "UTF-8");
Herkese İyi çalışmalar...





< Bu mesaj bu kişi tarafından değiştirildi fegabj -- 22 Ekim 2006; 20:07:30 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.