Kaç saatten beri yazdığım bir scriptin bir yerinde takılmış vaziyetteyim. Yapmak istediğim şeyi kısaca anlatmak gerekirse:
Uzak sunucudaki bir XML dosyasından veri okutuyorum ve bunu yaparken de fopen() kullanıyorum (PHP CURL ile derlenmemiş). Kodun ilgili kısmı şöyle:
if (!($fp = fopen($url, "r"))) {
die("XML adresine bağlanamadım.");
}
while ($getline = fread($fp, 4096)) {
$data = $data . $getline;
}
print_r($data);Ama dönen sonuçtaki Türkçe karakterleri hiç bir zaman doğru görüntüleyemiyorum. Ve karakterler öyle insanın anlayabileceği türden de değil. Mesela "ı" (küçük I) harfi yerine ı, "ü" yerine ü, "ç" yerine ç ... gibi saçma sapan karakterler çıkıyor. Uzak sunucudaki XML dosyası için herhangi bir karakter kodu belirlenmemiş <?xml başlık etikedinde ve müdahale etme şansımda yok maalesef.fopen() 'ı "rb" parametresiyle denedim, read() fonksiyonunu denedim, file_get_contents() ile denedim sonuç hiç değişmiyor. Sanırım bu "whitespace" dedikleri dalgadan oluyor ya da \n, \r ve \t karakterlerinden, ama sorunu çözemedim.
Ek olarak, dönen değerler tarayıcıda nasıl görüntüleniyorsa sayfa kaynağında da bire bir aynı görüntüleniyor. Üstteki kodun başına:
header('Content-type: text/xml');yazdığımda hem FF hem de IE dosyayı direk olarak XML dosyası gibi açmasına rağmen IE TR karakterleri düzgün gösteriyor ama FF de durum aynı. Tarayıcıların ikisinin de dil ayarları aynı (iso-8859-9). Ve de tabi ki çağırdığım XML dosyası karaketerleri hem kaynak kodunda hem de tarayıcıda düzgün gösteriyor.Daha önce bu gibi bir durum başına gelen varsa, ya da konu hakkında bilgisi olan; yardım ederlerse çok memnun kalacağım.
Artık 3.parti bir karakter dönüştürme scripti kullanmaktan başka bir çare kalmadı.