• 11-08-2010, 09:41:26
    #1
    Üzerinde çalıştığım bir scriptte manşet kısmı türkçe karater hatası vermektedir.

    <?
    function baslik_yaz($yazi)
    {
    $harfler ["A"]= "H1";
    $harfler ["B"]= "H2";
    $harfler ["C"]= "H3";
    $harfler ["Ç"]= "H4";
    $harfler ["D"]= "H5";
    $harfler ["E"]= "H6";
    $harfler ["F"]= "H7";
    $harfler ["G"]= "H8";
    $harfler ["Ğ"]= "H9";
    $harfler ["H"]= "H10";
    $harfler ["I"]= "H11";
    $harfler ["İ"]= "H12";
    $harfler ["J"]= "H13";
    $harfler ["K"]= "H14";
    $harfler ["L"]= "H15";
    $harfler ["M"]= "H16";
    $harfler ["N"]= "H17";
    $harfler ["O"]= "H18";
    $harfler ["Ö"]= "H19";
    $harfler ["P"]= "H20";
    $harfler ["R"]= "H21";
    $harfler ["S"]= "H22";
    $harfler ["Ş"]= "H23";
    $harfler ["T"]= "H24";
    $harfler ["U"]= "H25";
    $harfler ["Ü"]= "H26";
    $harfler ["V"]= "H27";
    $harfler ["Y"]= "H28";
    $harfler ["Z"]= "H29";
    $harfler ["Q"]= "H30";
    $harfler ["W"]= "H31";
    $harfler ["X"]= "H32";
    $harfler ["'"]= "H33";
    $harfler ["?"]= "H34";
    $harfler ["0"]= "H35";
    $harfler ["1"]= "H36";
    $harfler ["2"]= "H37";
    $harfler ["3"]= "H38";
    $harfler ["4"]= "H39";
    $harfler ["5"]= "H40";
    $harfler ["6"]= "H41";
    $harfler ["7"]= "H42";
    $harfler ["8"]= "H43";
    $harfler ["9"]= "H44";
    $harfler ["!"]= "H45";
    $harfler ["-"]= "H46";
    $harfler ["."]= "H47";
    $harfler ["%"]= "H48";
    $harfler [" "]= "H49";

    $yazi = rtrim(strtoupper(substr($yazi,0,35)));
    $uz = strlen ($yazi);

    $toplamuz = 0;
    $resim_en = 495;

    for ($i=0; $i<$uz; ++$i)
    {
    $x = $yazi[$i];
    $resim = "x/".$harfler[$x].".gif";
    $d=getimagesize($resim);
    $genislik = $d[0];
    $toplamuz = $toplamuz + $genislik;
    }

    if ($toplamuz > $resim_en) {
    $fark = $toplamuz - $resim_en;
    $ortalama = $fark / $uz;
    }
    else {
    $fark = 0;
    }

    for ($i=0; $i<$uz; ++$i)
    {
    $x = $yazi[$i];
    $resim = "x/".$harfler[$x].".gif";
    $d=getimagesize($resim);
    if ($fark != 0) {
    $Yuzde = $d[0] / $toplamuz;
    $Cikan = $fark * $Yuzde;
    $Kalan = $d[0] - $Cikan;
    }
    else { $Kalan = $d[0]; }
    ?><p align="center"><img border="0" src='<? echo $resim ?>' height="64" width="<? echo $Kalan?>" align="left" hspace="0">
    </p>
    <?
    }
    }
    $ykp="TÜRKÇE KARAKTER PROBLEMİ VAR";
    echo baslik_yaz($ykp);
    // function ...
    ?>

    tüm çabalarıma rağmen döngüden türkçe karakterleri geçiremedim. aklınıza gelen ne varsa denedim. olmadı
  • 12-08-2010, 10:28:08
    #2
    Üyeliği durduruldu
    $ykp = iconv("UTF-8", "ISO-8859-9", $ykp);
    eğer işini görmezse ters çevir yani
    $ykp = iconv("ISO-8859-9", "UTF-8", $ykp);

    bu yaşadığın karakter türüyle alakalı ama üstteki 2 koddan biri %90 işini çözer. sayfan iso ise üsttekini kullan. utf ise alttakini kullan.
  • 13-08-2010, 01:27:11
    #3
    Üyeliği durduruldu
    Aklıma geldi yazayım dedim, öncelikle veriyi olduğu gibi bir basmaya çalışın bence ekranda nasıl çıktığını görün ona göre düzenlemeye gidin. Onun haricinde ascii karakterleri yardımcı olabilir belki. Bunun için veri içerisindeki Türkçe karakterleri ascii yapıp ilgili fonksiyonda da Ü yerine Ünin karşılığı olan ascii karakterini yazabilirsiniz.

    diye yazdım mesajı ancak bir şeyi gözden kaçırdığımı fark ettim sonradan, her karakteri tek tek aldığınıza göre 4-5 karakterden oluşan ascii karışıklık yaratır. Bence de Web_Scripti tarafından verileni deneyin derim, olmazsa yine bakılır.

    Notepad++ gibi bir şeyle de biçimini değiştirip deneyebilirsiniz.