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 за одним исключением, где то там между кодами будет валяеться сточка


если чесно то я не знаю почему такое происходит, лишь знаю что так работает, возможно докопаюсь до истины и раскажу

6 Responses to “saveHTML в DOMDocument”

  1. aaaee2 Says:

    Блин, бред. Каждый раз вызов iconv… На сайте вроде hello_world.php еще ладно, но на больших сайтах с обработкой и выводом огромного кол-ва данных это не подход вообще.
    Проблема остается. Как я могу получить от DOM готовый HTML в кодировке UTF-8 без всяких html-encoded, имея чистый UTF-8 XML и чистый UTF-8 XSL? CP1251 меня совершенно не устраивает. У меня изначально данные в базе в UTF-8, я не хочу заниматься конвертированием в CP1251, это не правильно.

  2. admin Says:

    Не вижу здесь ничего, что можно назвать словом бред. Читайте внимательно пост. Слова “желание” и “реализм” не всегда дежат в одной плоскости. Для некоторых сайтов CP1251 кодировка основная и не все спешат переходить на UTF хотя лично за него обеими руками за.

  3. jankman Says:

    Спасибо! Очень помогла ваша заметка.
    И вообще приятный у вас блог, кратко и по делу. Успехов!
    2aaaee2 - нашли что-нибудь, более адекватное?

  4. virtualvoland Says:

    Спасибо большое за даннуюс статьеку.Очень помогла…

  5. virtualvoland Says:

    Странно,а у меня почему то на Денвере работает. А на серсере нет =((( Опять в мучениях. Странно. Скрипт просто проходит и ничего ен создает. Как объяснить это я не понимаю.

    // $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″… Только вот русские буквы опять кодовая абаракадабра…

  6. Zomb1e Says:

    я вместо iconv юзаю utf8_encode, она пошустрее будет.

Leave a Reply