XML + БД Oracle, проблеммы с кодировкой

dekoo

Новичок
XML + БД Oracle, проблеммы с кодировкой

Добрый день.

Возникла неодназначная проблемма, отловить которую мне никак не удается. Обрисую ситуацию в кратце.

Имеем XML файл, читаем его следующим образом:
PHP:
$filename = 'test.xml';
$dom = new DOMDocument();
$dom->load($filename);
header("Content-type: text/xml; charset=UTF-8");
print $dom->saveXML();
На выходе в браузере получаем нормальный, читабельный XML.

Далее возникает задача записать XML файл в БД Oracle 10g и прочитать его уже из БД в браузер. Решаем задачу след. образом:
PHP:
// читаем данные из CLOB поля в строку
$sql = 'SELECT FIELD AS XML FROM TABLE WHERE ID = '.$id.';
$con = new PDO(...);
$stmt = $con->prepare($sql);
$rez = $stmt->execute();
$rowset = $stmt->fetch(PDO::FETCH_ASSOC);
$xml_str = stream_get_contents($rowset['XML']); 
// var_dump($xml_str); **
// die();

// выводим в браузер
$filename = 'test.xml';
$dom = new DOMDocument();
$dom->loadXML($xml_str);
header("Content-type: text/xml; charset=UTF-8");
print $dom->saveXML();
Получаем ошибку - Input is not proper UTF-8, indicate encoding ! Также дамп в указанном месте (**) явно дает понять, что строка не в кодировке utf-8... вообще не понятно в какой кодировке. Напоминаю, что файл один и тот же, только читается либо напрямую, либо будучи предварительно подгруженным в БД.

PS: Вообще сам затрудняюсь локализовать проблемму, посему возможно довольно размытый вопрос получился. Просьба помочь в решении задачи )
 

dekoo

Новичок
Ммм... задача решена. Перед записью в БД перекодируем данные в cp1251 (iconv()). При чтении перекодируем обратно в UTF-8.

Тему можно закрывать, предварительно пояснив почему Оракл так не любит UTF-8. )
 
Сверху