我正在编写一个动态生成我的站点地图和站点地图索引的函数。
根据sitemap.org上的文档,该文件应以UTF-8编码。
我编写文件的功能相当简单,类似于:
function generateFile()
{
$xml = create_xml();
$fp = @fopen('sitemap', 'w');
fwrite($fp, $xml);
fclose($fp);
}
[编辑 - 在评论后添加]
create_xml()过于简单化,如下所示:
function create_xml()
{
return '<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>http://example.com/</loc>
<lastmod>2006-11-18</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
</urlset>';
}
我需要做些什么来确保文件以UTF-8编码?
此外,我想gzip文件,而不是保持未压缩。我知道如何在将文件保存到磁盘后压缩文件。我想知道(如何?),我可以在写入磁盘之前压缩文件吗?
答案 0 :(得分:0)
是的,您需要确保您的内容(create_xml()
的输出编码为UTF-8。为了确保这一点,您可以使用utf8_encode()。您需要确保XML文件指定<?xml version="1.0" encoding="UTF-8"?>
。我建议在fopen
模式下'wb'
,b表示二进制。这将确保数据完全按原样写入。
答案 1 :(得分:0)
您的PHP脚本文件应保存为utf-8。
此外,如果没有看到create_xml()
做什么
答案 2 :(得分:0)
如果您只使用ASCII字符,则您的文件将始终为UTF-8。