![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Mar 2009
Сообщений: 4
|
Мучаюсь уже которую неделю, нигде ответа найти не могу.
Есть: XML, который формируется в FLASH: xml_b: my_xml = new XML(); my_xml.onLoad = function(data){ if(data==null){ trace("Data was not send! Try again."); }else{ trace(my_xml); } } xml_b.contentType = "text/xml"; xml_b.sendAndLoad("http://mysite/1.php", my_xml); Задача: отпарсить присылаемый XML в пхп возникает проблема: либо не парсится, выдает ошибку: "<b>Warning</b>: simplexml_load_string() [<a href="function.simplexml-load-string">function.simplexml-load-string</a>]: Entity: line 1: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xC2 0xE2 0xE5 0xE4 in <b>/mysite/1.php</b> on line <b></b><br /> " вроде Flash должен передавать UTF-8 по-умолчанию, хотя при $input=utf8_encode($input) все работает, но страдает кириллица. iconv не работает, никакой. При добавление к $input строчки "<?xml version="1.0" encoding="utf-8"?>", тоже не работает. Как обработать XML с кириллицей в пхп, передаваемый через FLASH? |
|
|||||
|
Модрон-ветеринар
|
Любопытно.
Я бы еще попробовал класс LoadVars для передачи скрипту строки, представляющий собой XML. Выложите тут комплект исходников, порезанных до минимально необходимых для воспроизведения проблемы.
__________________
Идите первым! Последний раз редактировалось mooncar; 07.07.2012 в 20:10. |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 393
|
Во-первых, имена вроде "Название 1.1"
не уверен, что поддерживаются. во-вторых, все, что вы пишите в xml файл, должно быть пропущено через специальные функции, который кодируют спец-символы. Как вы создаете ваш xml документ? в-третьих, как вы верно заметили, по умолчанию от xml-я ждут UTF-8, и, между прочим, по стандарту кодировку обязаны указывать. То, что у вас при utf8_encode все работает, но бьется, намекает на то, что у вас не uft-8 формируется, а исходная строка вообще черт-е в чем. Добавлено через 2 минуты И флеш-то с UTF-8 работает, но если вы начнете работать и вставите где-то кириллицу в win-1251, то она так и останется кириллицей в win-1251 Последний раз редактировалось Krusty; 07.07.2012 в 20:38. |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 4
|
Цитата:
n=_root.xml_b.createElement("A"); n.attributes.name="Название 1" _root.xml_b.appendChild(n); Если скажете, как во Flash указывать кодировку отправляемогого POST запроса, буду очень благодарен. с удовольствием бы указал. пробывал таким же образом, как и создавал xml, но там тупо тэг. пробовал прилеплять уже в php: $input='"<?xml version="1.0" encoding="utf-8"?>'.$input, бесполезно. Перерыл гугл, но так и не узнал, как во Flash указывать кодировку. Узнал только то, что она по умолчанию UTF-8. Цитата:
функцией, по моему, mb_detect_encoding...говорит толи UTF-8, толи Unicode. точно не помню. Пытался перевести, методом проб и ошибок, функциями iconv и mb_convert_encoding в UTF-8 с windows-1251, UTF-16, и с UTF-8 в UTF-8... Эффекта 0. Исходники чистые, т.е. сокращены до минимума,эффект тот же: System.useCodepage = true; var xml_b:XML = new XML(); n=_root.xml_b.createElement("A"); n.attributes.name="Название 1" _root.xml_b.appendChild(n); n=_root.xml_b.firstChild.createElement("B"); n.attributes.name="Название 1.1" _root.xml_b.appendChild(n); var my_xml = new XML(); my_xml.onLoad = function(data){ if(data==null){ trace("Data was not send! Try again."); }else{ trace(my_xml); } } xml_b.contentType = "text/xml"; xml_b.sendAndLoad("http://mysite/1.php", my_xml); LoadVars сейчас попробую... |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 393
|
В пхп кодировки-больное место. забудьте навсегда mb_convert_encoding mb_detect_encoding и прочее от mbstring. Это все неправда, это никогда не работало толком. Это раз. Второе. Дампните пришедший результат в файл, и откройте его в редакторе, который умеет работать с различными представлениями, откройте его и смотрите.
Верьте simplexml_load_string() Entity: line 1: parser error : Input is not proper UTF-8 Если она считает, что это не UTF-8, значит, не оно. это три. и четыре. не циклитесь на флеше, смотрите на серверную часть http://mysite/1.php там тоже полно потенциальных багов, начните с и далее. Последний раз редактировалось Krusty; 08.07.2012 в 13:27. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|