Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> xml и php5 кодировка, Выводит кирилицу 
:(
    Опции темы
АлексейБ
Дата 5.7.2007, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.7.2005

Репутация: нет
Всего: нет



Все работает,
но одна проблема - он выводит кириллицу, помогите исправить

________________
KPKG UM 
№ 1 
ГЉГЏГЉГѓ ГћГЊ 
№ 25 
________________


Код

<?xml version="1.0" encoding="iso-8859-1" ?>
<articles>
    <item>
        <title>KPKG UM</title>
        <link>1</link>
    </item>
    <item>
        <title>КПКГ ЮМ</title>
        <link>25</link>
    </item>
</articles>



Код

<?php
$dom = new DomDocument();
$dom->load("articles.xml");

foreach ($dom->documentElement->childNodes as $articles) {
    if ($articles->nodeType == 1 && $articles->nodeName == "item") {
        foreach ($articles->childNodes as $item) {
            if ($item->nodeType == 1 && $item->nodeName == "title") {
                echo "<p> $item->textContent </p>";
           }
            if ($item->nodeType == 1 && $item->nodeName == "link") {
                echo "<p>№ $item->textContent </p>";
            }
       }
    }
}
?> 


PM MAIL   Вверх
-=Ustas=-
Дата 6.7.2007, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 1
Всего: 69



АлексейБ, если бы ты знал о таком ресурсе как php.net, то ты бы сразу же мог бы посмотреть конструктор класса DOMDocument, и понять что он может принимать два параметра - версию документа и кодировку.
Код

$dom = new DomDocument( '1.0', 'WINDOWS-1251' );
$dom->load("articles.xml");

Кстати, articles.xml сохрани в кодировке WINDOWS-1251 и соответственно в файле
Код

<?xml version="1.0" encoding="WINDOWS-1251" ?>

А вообще советую окончательно переходить на Юникод, меньше проблем с кодировками будет.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
АлексейБ
Дата 9.7.2007, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.7.2005

Репутация: нет
Всего: нет



Ясно,

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

ПОМОГИТЕ очень СРОЧНО надо


PM MAIL   Вверх
UADeveloper
Дата 9.7.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.7.2007
Где: Харьков

Репутация: нет
Всего: нет



Цитата(-=Ustas=- @  6.7.2007,  09:34 Найти цитируемый пост)
АлексейБ, если бы ты знал о таком ресурсе как php.net, то ты бы сразу же мог бы посмотреть
 smile 

http://ru.php.net/manual/ru/ref.xmlwriter.php
http://ru.php.net/manual/ru/ref.libxml.php
http://ru.php.net/manual/ru/ref.simplexml.php
http://ru.php.net/manual/ru/ref.sdo-das-xml.php

Код
<?php
/**
 * Load, update, and save an XML document
 */
try {
   $xmldas = SDO_DAS_XML::create("letter.xsd");
   $document = $xmldas->loadFile("letter.xml");
   $root_data_object = $document->getRootDataObject();
   $root_data_object->date = "September 03, 2004";
   $root_data_object->firstName = "Anantoju";
   $root_data_object->lastName = "Madhu";
   $xmldas->saveFile($document, "letter-out.xml");
   echo "New file has been written:\n";
   print file_get_contents("letter-out.xml");
} catch (SDO_Exception $e) {
   print($e->getMessage());
}
?>



Ищи!

PM MAIL   Вверх
crazzzy
Дата 25.9.2007, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



а если xml файл в UTF-8, а страничка (и весь сайт), в которой он выводится в виде таблицы, в windows-1251, то ...

я правильно понимаю, что вывести русский текст в значениях узлов можно только через iconv('utf-8', 'windows-1251', $column->textConten);

ведь внутреннее представление хранится в юникоде, а выводить надо в windows-1251.

Это сообщение отредактировал(а) crazzzy - 25.9.2007, 01:51
PM MAIL WWW   Вверх
IZ@TOP
Дата 27.9.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



XML всегда в юникоде. Тебе ничего не мешает указать кодировку после загрузки документа. 

Код

$XML    = '<?xml version="1.0" encoding="utf-8"?><root>Привет</root>';
$DOM    = new DOMDocument();
$DOM->loadXML($XML);
$DOM->encoding = 'windows-1251';
echo $DOM->saveXML();



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
crazzzy
Дата 27.9.2007, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



мешать не мешает, но и не помагает ... ;)

мне нужно выводить на странице сайта данные из XML файла, русский текст присутствует. страница у меня в windows-1251, т.к. самая распространенная в русскоязычном инете ;) а xml файл генерируется сторонней программой и имеет кодировку utf-8

я вывожу значения узлов через  iconv('utf-8', 'windows-1251', $column->textConten);

вот и поинтересовался может можно как-то обойтися без iconv, при исходных данных задачи, т.е. может каким-то настройками ...

указание $DOM->encoding = 'windows-1251'; после загрузки документа в этом вопросе не помагло, выводятся кракозябры пока не сделаю  iconv('utf-8', 'windows-1251', $column->textConten);


PM MAIL WWW   Вверх
IZ@TOP
Дата 1.10.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



Должно работать. Версия PHP какая? Что выдает мой пример. Хотелось бы посмотреть откуда вы берете данные и как обрабатываете.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
crazzzy
Дата 1.10.2007, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



php5 пакет Denver ...

я так понимаю, что твой пример, в таком виде, некоректен для моей задачи, т.к. помимо указания кодировки utf8 в xml файле его еще и сохранить надо в utf8 ...

файл xml прикрепил к сообщению (следует переименовать table.txt -> table.xml ).

вывожу его так:

Код

<?php
  $dom = new DomDocument();
  if(false === $dom->load('table.xml')){
    echo "This xml document is not valid!" . "<br />";
  }
  else{
    echo "This xml document is valid!" . "<br />";

    $dom->encoding = 'windows-1251';
    // echo $DOM->saveXML();

    foreach($dom->documentElement->childNodes as $rows){
       if($rows->nodeType == XML_ELEMENT_NODE && $rows->nodeName == "row"){
        echo $rows->getAttributeNode('src')->value . "<br />";
        foreach($rows->childNodes as $column){
          if($column->nodeType == XML_ELEMENT_NODE && $column->nodeName == "column"){
            echo $column->textContent . "<br />";
          }
        }
      }
    }
  }
?>


вместо русского языка кракозябры ... при установке кодировки в броузере в win1251, т.к. русский текст в xml utf8

Это сообщение отредактировал(а) crazzzy - 1.10.2007, 22:49

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  table.txt 0,31 Kb
PM MAIL WWW   Вверх
skaizer
Дата 4.10.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 18.4.2007

Репутация: нет
Всего: нет



Цитата

вместо русского языка кракозябры ... при установке кодировки в броузере в win1251, т.к. русский текст в xml utf8

При выводе кирилицы из XML файла можно как вариант попробовать функцию перекодировки mb_convert_encoding()
Прототип функции:
Код

string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )

Пример, как ее использовал я:
Код

function encoding ($str){
            $code = "UTF-8";
            $curcode = "Windows-1251";
    $str = mb_convert_encoding($str, $curcode, $code);
    return $str;
}

PM MAIL   Вверх
crazzzy
Дата 6.10.2007, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



а чем она лучше  iconv('utf-8', 'windows-1251', $column->textConten);
PM MAIL WWW   Вверх
WolfON
Дата 6.10.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: нет
Всего: 8



тем, что расширение mbstring в которое входит mb_convert_encoding может быть установлено далеко не всюду smile
PM MAIL ICQ   Вверх
Guedda
Дата 6.10.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



Модератор: Пожалуйста, один топик - один вопрос.
Тема закрыта!


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0930 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.