Написание файла с кодировкой 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?
Кроме того, я хотел бы сжать файл, а не оставлять его несжатым. Я знаю, как сжать файл ПОСЛЕ того, как я сохранил его на диске. Я хочу знать, могу ли (как?) я сжать файл ПЕРЕД записью на диск?
3 answers
Да, вам нужно убедиться, что ваш контент (вывод create_xml()
закодирован как UTF-8. Чтобы убедиться в этом, вы можете использовать utf8_encode(). Вам нужно убедиться, что в XML-файле указано <?xml version="1.0" encoding="UTF-8"?>
. И я бы предложил fopen
в режиме 'wb'
, b означает двоичный файл. Это гарантирует, что данные будут записаны точно так, как есть.
Ваши файлы PHP-скриптов должны быть сохранены в формате utf-8.
Кроме того, трудно сказать больше, не видя, что create_xml()
делает
Если вы используете только символы ASCII, ваш файл всегда будет в формате UTF-8.