这是我的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"不能工作.
我们怎么解决?
感谢您的关注。干得好..。
发布于 2013-09-08 16:44:11
遵循Sitemap协议格式的站点地图必须由UTF-8编码:
Sitemap协议格式由XML标记组成。站点地图中的所有数据值都必须是实体-转义。文件本身必须被UTF-8编码.
举个例子,你刚开始做的事:
<?xml version=\"1.0\" encoding=\"ISO8859-9\" ?>已经错了,因为XML站点地图不支持这种编码。正如您在问题中所写的,您只是在那里交换字符串(例如,将字符串替换为"UTF-8"),但是对于实际输出的编码,您完全没有丢失任何信息,您很可能只输出糟糕的编码字符数据,甚至XML。
你可以做两件事来大大改善这一点,并减少发生这种错误的可能性:
https://stackoverflow.com/questions/18684704
复制相似问题