Написание файла с кодировкой UTF8 на PHP


Я пишу функцию для динамического создания моей карты сайта и индекса карты сайта.

Согласно документам на 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?

Кроме того, я хотел бы сжать файл, а не оставлять его несжатым. Я знаю, как сжать файл ПОСЛЕ того, как я сохранил его на диске. Я хочу знать, могу ли (как?) я сжать файл ПЕРЕД записью на диск?

Author: morpheous, 2010-06-25

3 answers

Да, вам нужно убедиться, что ваш контент (вывод create_xml() закодирован как UTF-8. Чтобы убедиться в этом, вы можете использовать utf8_encode(). Вам нужно убедиться, что в XML-файле указано <?xml version="1.0" encoding="UTF-8"?>. И я бы предложил fopen в режиме 'wb', b означает двоичный файл. Это гарантирует, что данные будут записаны точно так, как есть.

 0
Author: igorw, 2010-06-25 12:18:35

Ваши файлы PHP-скриптов должны быть сохранены в формате utf-8.

Кроме того, трудно сказать больше, не видя, что create_xml() делает

 0
Author: Pete, 2010-06-25 12:18:46

Если вы используете только символы ASCII, ваш файл всегда будет в формате UTF-8.

 0
Author: Crack, 2010-06-25 12:59:44