Кодировка тегов при парсинге XML

Кодировка тегов при парсинге XML

Здравствуйте.

Есть код:
PHP:
<?php
error_reporting(E_ALL);
$p = xml_parser_create('UTF-8');
xml_set_element_handler($p, 's', 'e');
xml_set_character_data_handler($p, 'd');
function s($parser, $name, $attribs)
{
	var_dump($name, $attribs);
}
function e($parser, $name)
{
}
function d($parser, $data)
{
	var_dump($data);
}

$h = fopen('import.xml', 'r');
while (!feof($h))
{
	$data = fread($h, 4096);
	xml_parse($p, $data, feof($h));
}
?>
есть xml файл (utf-8):
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<человек имя="Иван">Иванов</человек>
Результаты:
Windows 7, Apache 2.0, PHP 5.3.2
и
Windows XP SP3, Apache 2.0, PHP 5.3.2
Код:
string(14) "челнвеЪ"
array(1) {
  ["ШУя"]=>
  string(8) "Иван"
}
string(12) "Иванов"
Ubuntu 10.04 Apache 2 PHP 5.3.2
Код:
string(14) "человек"
array(1) {
  ["имя"]=>
  string(8) "Иван"
}
string(12) "Иванов"
Что происходит с названиями тегов и атрибутов в Windows?
Спасибо.
 

mity

Новичок
Там осуществляется приведение к определённому регистру в какой то кодировке. В русском языке это совершенно другие буквы и соответственно они конвертируются не верно.
PHP:
xml_parser_set_option($p,XML_OPTION_CASE_FOLDING, false);

//Не нужно читать файл маленькими кусочками, прочитали всё за раз и распарсерели.
if(($h = fopen("name", 'rb'))){
  $data=fread($h,100000000);
  fclose($h);

  xml_parse($p, $data, true); 
  unset($data);
};
 

A1x

Новичок
//Не нужно читать файл маленькими кусочками, прочитали всё за раз и распарсерели.
если размер файла позволяет прочитать его за один раз то лучше уж тогда разбирать DOM'ом
 
Сверху