XML içindeki Türkçe karakterlerin sıkıntı olduğunu bilmiyordum.
MsSQL kaynaklı bir XML verisini PHP ve SimpleXML ile işlemeye çalışırken, türkçe karakterler konusunda taklalar attım. Mesela XML içindeki data Abakxfcs
gelmiş Lakin aslında Abaküs
demek istiyor.
Uğraşırken şöyle bir fonksiyon ortaya çıktı, işimi gördü. Kesin daha basit yolu vardır ama, ben yine paylaşmış olayım.
function xml2tr($string) { /* Biraz derleme, çokça kurcalama ile Sabri Ünal tarafından yazılmıştır. Creative Common + GNU FDL + GPL (v1-v2-v3) ile lisanslanmıştır Nasıl hoşunuza giderse o lisans ile kullanabilirsiniz */ $string = str_replace("\xc7", "Ç", $string); // Ç $string = str_replace("\xe7", "ç", $string); // ç $string = str_replace("\xd0", "Ğ", $string); // Ğ $string = str_replace("\xf0", "ğ", $string); // ğ $string = str_replace("\xdd", "İ", $string); // İ $string = str_replace("\xfd", "ı", $string); // ı $string = str_replace("\xd6", "Ö", $string); // Ö $string = str_replace("\xf6", "ö", $string); // ö $string = str_replace("\xdc", "Ü", $string); //Ü $string = str_replace("\xfc", "ü", $string); //ü //karakter grupları $string = str_replace("\xdf;","&",$string); $string = str_replace("\x80;","+",$string); //uzatmalı karakterler $string = str_replace("\xe2", "â", $string); //uzatma a $string = str_replace("\xc2", "Â", $string); //uzatma A $string = str_replace("\xee", "î", $string); //uzatma İ $string = str_replace("\xce", "Î", $string); //uzatma İ $string = str_replace("\xfb", "û", $string); //uzatma u $string = str_replace("\xfb", "Û", $string); //uzatma u => kesin hatalı return $string; }