Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.07.2012, 19:40
Вася Булочкин вне форума Посмотреть профиль Отправить личное сообщение для Вася Булочкин Найти все сообщения от Вася Булочкин
  № 1  
Ответить с цитированием
Вася Булочкин

Регистрация: Mar 2009
Сообщений: 4
По умолчанию отправка XML в PHP (кириллица)

Мучаюсь уже которую неделю, нигде ответа найти не могу.
Есть:
XML, который формируется в FLASH:

xml_b:
Код:
<A name="Название 1">
<B name="Название 1.1">
</B>
</A>

Код AS1/AS2:
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);
есть PHP:
PHP код:
<?php

$input 
file_get_contents("php://input");


$dom2 simplexml_load_string($input);



?>
Задача: отпарсить присылаемый 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?

Старый 07.07.2012, 20:07
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Любопытно.
Я бы еще попробовал класс LoadVars для передачи скрипту строки, представляющий собой XML.
Выложите тут комплект исходников, порезанных до минимально необходимых для воспроизведения проблемы.
__________________
Идите первым!


Последний раз редактировалось mooncar; 07.07.2012 в 20:10.
Старый 07.07.2012, 20:35
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 3  
Ответить с цитированием
Krusty

Регистрация: 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.
Старый 08.07.2012, 04:33
Вася Булочкин вне форума Посмотреть профиль Отправить личное сообщение для Вася Булочкин Найти все сообщения от Вася Булочкин
  № 4  
Ответить с цитированием
Вася Булочкин

Регистрация: Mar 2009
Сообщений: 4
Цитата:
во-вторых, все, что вы пишите в xml файл, должно быть пропущено через специальные функции, который кодируют спец-символы. Как вы создаете ваш xml документ?
в-третьих, как вы верно заметили, по умолчанию от xml-я ждут UTF-8, и, между прочим, по стандарту кодировку обязаны указывать. То, что у вас при utf8_encode все работает, но бьется, намекает на то, что у вас не uft-8 формируется, а исходная строка вообще черт-е в чем.
формируется во Flash, таким способом:
Код AS1/AS2:
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.

Цитата:
И флеш-то с UTF-8 работает, но если вы начнете работать и вставите где-то кириллицу в win-1251, то она так и останется кириллицей в win-1251
POST чистый, нигде не правился. Пробовал узнать, если не UTF-8, то что:
функцией, по моему, mb_detect_encoding...говорит толи UTF-8, толи Unicode. точно не помню. Пытался перевести, методом проб и ошибок, функциями iconv и mb_convert_encoding в UTF-8 с windows-1251, UTF-16, и с UTF-8 в UTF-8... Эффекта 0.
Исходники чистые, т.е. сокращены до минимума,эффект тот же:
Код AS1/AS2:
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);
System.useCodepage = true; и xml_b.contentType = "text/xml"; убирались, не на что не повлияли.
LoadVars сейчас попробую...

Старый 08.07.2012, 13:05
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 5  
Ответить с цитированием
Krusty

Регистрация: 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 там тоже полно потенциальных багов, начните с
PHP код:
setlocale(LC_ALL'en_US.UTF8''en_US.UTF-8'); 
и далее.


Последний раз редактировалось Krusty; 08.07.2012 в 13:27.
Создать новую тему Ответ Часовой пояс GMT +4, время: 02:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:05.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.