在PHP中使用UTF8编码编写文件

时间:2010-06-25 12:13:07

标签: php web compression gzip sitemap

我正在编写一个动态生成我的站点地图和站点地图索引的函数。

根据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文件,而不是保持未压缩。我知道如何在将文件保存到磁盘后压缩文件。我想知道(如何?),我可以在写入磁盘之前压缩文件吗?

3 个答案:

答案 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。