Написание файла с кодировкой UTF8 на PHP - PullRequest
3 голосов
/ 25 июня 2010

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

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

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

Ответы [ 3 ]

0 голосов
/ 25 июня 2010

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

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

0 голосов
/ 25 июня 2010

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

0 голосов
/ 25 июня 2010

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

...