簡體   English   中英

sitemap.xml土耳其語字符

[英]sitemap.xml turkish character

那是我的PHP代碼;

//Encode ANSI
function donustur($str){
    $eski = array('Ç', 'Ş', 'Ğ', 'Ü', 'İ', 'Ö', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı', ' ','&');
    $yeni = array('c', 's', 'g', 'u', 'i', 'o', 'c', 's', 'g', 'u', 'o', 'i', '-','&');
    return str_replace($eski,$yeni,$str);
}

header('Content-type: text/xml');
echo "<?xml version=\"1.0\" encoding=\"ISO8859-9\" ?>\n";
echo "<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd\">";

echo "<url>
  <loc>http://www.sitem.com/</loc>
  <changefreq>daily</changefreq>
</url>";

$d = "\t<changefreq>daily</changefreq>\n";

$kategoriCek = mysql_query("SELECT * FROM kategoriler");
while($kat = mysql_fetch_array($kategoriCek)){
   echo "<url>\n";
   echo "\t<loc>http://www.sitem.com/".$kat['id']."-".donustur(strtolower($kat['kategoriadi']))."-kategori.html</loc>\n";
   echo $d;
   echo "</url>\n";
}

echo "</urlset>\n";

輸出;

<loc>http://www.sitem.com/93-??-guvenl?k-kategori.html</loc>

我要這樣

<loc>http://www.sitem.com/93-is-guvenlik-kategori.html</loc>

UTF-8和UTF-8不是BOM表或encoding =“ ISO8859-9”encoding =“ UTF-8”不起作用。

我們該如何解決?

感謝您的關注。 干得好..

遵循Sitemap協議格式的Sitemap必須采用UTF-8編碼:

Sitemap協議格式由XML標簽組成。 Sitemap中的所有數據值都必須是轉義的實體 文件本身必須為UTF-8編碼。

因此,例如,您在一開始就要做的事情:

 <?xml version=\"1.0\" encoding=\"ISO8859-9\" ?>

已經是錯誤的,因為XML站點地圖不支持該編碼。 正如您在問題中所寫的那樣,您只是在此處交換了字符串(例如,轉換為“ UTF-8”),但您對實際輸出的編碼一無所知,很可能只是輸出了錯誤的編碼字符數據,甚至XML。

您可以執行以下兩項操作來大大改善此問題並減少發生此類錯誤的可能性:

  1. 找出要輸入的字符的編碼方式。 在將它們傳遞到輸出處理之前,將它們轉換為UTF-8。
  2. 使用諸如SimpleXMLXMLWriter之類的庫來生成XML。 您不需要自己全部做。 這些庫已經處理了編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM