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.
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
<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 Ol Şimdi DeğilÜ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.