Проблемы с кодировкой при формирование XML

  • Автор темы Автор темы dvvid
  • Дата начала Дата начала

dvvid

Новичок
Проблемы с кодировкой при формирование XML

Доброго времени суток прошу помочь в следующем вопросе.
В html ввожу любые символы в поле myName. в промежуток времени 1 сек срабатывает JavaScript
и отправляет данные в php файл следующим образом

// Получить имя введенное пользователем в форму
name = encodeURIComponent(document.getElementById('myName').value);
// Обратиться к сценарию quickstart.php на сервере
xmlHttp.open("GET", "quickstart.php?name=" + name, true);
// определить метод который будет обрабатывать ответы сервера
xmlHttp.onreadystatechange = handleServerResponse;
// Послать асинхронный запрос серверу
xmlHttp.send(null);

структура файла quickstart.php
PHP:
<?php
	// Результат будем отправлять в формате XML
	header('Content-Type: text/xml');
	
	// сгенерировать заголовок XML
	echo '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
	//создаь элемент <response>
	echo '<response>';
	$name = $_GET['name'];
	$userNames = array("DIMA","Slava","ДИМА");
	if (in_array(strtoupper($name), $userNames))
		echo 'Здраствуйте '. htmlentities($name);
	else if (trim($name) == '')
		echo 'Скажи мне как тебя зовут';
	else
		echo htmlentities($name). ', вы мне не знакомы!';
	echo '</response>';		
?>

Если ввожу латиницу то возвращаеться ответ в тех символах которые я вводил в поле myName;
Если кириллица все символы переводяться в utf-8. Например при вводе слова "Привет" передается
строка "%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82" и xml файл не формируется.
Вопрос как в файле quickstart.php данную строку превратить опять в "Привет"?

Все файлы html, js, php писал и на utf-8 и на cp1251 работает одиннаково(iconv не работает в данном примере)
 
1) используй везде utf8. 1251 имеет смысл только для обратной совместимости со старьем, более никакого
2) rawurldecode
 
Попробывал функцию работает нормально на таком примере:
PHP:
<?php
    header('Content-Type: text/html');
    $name = $_GET['name'];
    echo rawurldecode($name); 
?>

Но как только в заголовке я указываю header('Content-Type: text/xml'); тоесть меняю тип с html на xml то также как и раньше ошибка остаеться.

Mozilla выдает такую ошибку при чем с использованием функции rawurldecode ни чего не изменилось?

Ошибка синтаксического анализа XML: неопределённая сущность Адрес: http://localhost/ajax/quickstart/quickstart.php?name=Привет Строка 1, символ 66:

-~{}~ 19.01.10 07:21:

-~{}~ 19.01.10 07:21:

Заработало убрал функцию htmlentities() и все стало нормально :)
 
Сверху