saveHTML в DOMDocument
Когда создаешь HTML через DOMDocument если используется английский язык то проблем нету, он если в том случае как у меня, когда нужен русский, то здесь надо братить внимание на несколько моментов.
$dom = new DOMDocument('1.0', 'windows-1251');
после этого, после этого вам надо учесть то что DOMDocument всеровно принимает UTF-8, поэтому отсюда делаем так
$foto->appendChild(
$dom->createElement("isue",
iconv("cp1251", "UTF-8", $row['publish'])
)
);
вы заметили что мы из виндовой кодировки переводим именно в юникод. И финал
echo $dom->saveHTML();
Но, однако всегда есть но
$dom = new DOMDocument('1.0', 'utf-8');
$tempAl=$dom->createElement('a', 'во всех');
echo $dom->saveXML();
в таком случае все работает без iconv, что очень странно и отлично грузится на страницу include в HTML с кодировкой cp1251 за одним исключением, где то там между кодами будет валяеться сточка
если чесно то я не знаю почему такое происходит, лишь знаю что так работает, возможно докопаюсь до истины и раскажу
July 23rd, 2007 at 10:18 pm
Блин, бред. Каждый раз вызов iconv… На сайте вроде hello_world.php еще ладно, но на больших сайтах с обработкой и выводом огромного кол-ва данных это не подход вообще.
Проблема остается. Как я могу получить от DOM готовый HTML в кодировке UTF-8 без всяких html-encoded, имея чистый UTF-8 XML и чистый UTF-8 XSL? CP1251 меня совершенно не устраивает. У меня изначально данные в базе в UTF-8, я не хочу заниматься конвертированием в CP1251, это не правильно.
July 24th, 2007 at 10:29 am
Не вижу здесь ничего, что можно назвать словом бред. Читайте внимательно пост. Слова “желание” и “реализм” не всегда дежат в одной плоскости. Для некоторых сайтов CP1251 кодировка основная и не все спешат переходить на UTF хотя лично за него обеими руками за.
January 18th, 2008 at 3:33 am
Спасибо! Очень помогла ваша заметка.
И вообще приятный у вас блог, кратко и по делу. Успехов!
2aaaee2 - нашли что-нибудь, более адекватное?
February 26th, 2008 at 2:30 pm
Спасибо большое за даннуюс статьеку.Очень помогла…
February 27th, 2008 at 6:24 pm
Странно,а у меня почему то на Денвере работает. А на серсере нет =((( Опять в мучениях. Странно. Скрипт просто проходит и ничего ен создает. Как объяснить это я не понимаю.
// $doc = new DOMDocument(’1.0′, ‘windows-1251′);
$doc = new DOMDocument(’1.0′);
$doc->formatOutput = true;
$root = $doc->createElement(’client’);
$root = $doc->appendChild($root);
for ($i = 0; $i appendChild($doc->
createElement(mysql_field_name($result, $i) , iconv(”cp1251″ , “UTF-8″ , $row[$i])));
}
$doc->save(”../xmls/file.xml”);
Все нормально создается только если убрать из 1 строчки
“windows-1251″… Только вот русские буквы опять кодовая абаракадабра…
November 24th, 2009 at 12:28 pm
я вместо iconv юзаю utf8_encode, она пошустрее будет.