这是我的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或编码=“ISO8859-9”, encoding =“UTF-8”无效。
我们如何解决?
感谢您的关注。 好作品..
答案 0 :(得分:0)
Sitemap protocol格式后的站点地图必须采用UTF-8编码:
Sitemap协议格式由XML标记组成。站点地图中的所有数据值都必须为entity-escaped。文件本身必须是UTF-8编码。
例如,你在一开始就做了什么:
<?xml version=\"1.0\" encoding=\"ISO8859-9\" ?>
已经错了,因为XML站点地图不支持该编码。正如你在你的问题中写道的那样,你只是在那里互换了字符串(例如“UTF-8”),但是你根本没有关于实际输出编码的信息,你很可能只输出错误的编码字符数据甚至可能XML。
您可以做两件事来大大改善这一点,并减少出现此类错误的可能性: