PDA

Просмотр полной версии : escape(x)!=unescape(x)


AlexCooper
22.09.2008, 01:32
С помощью 'sendAndLoad' отправляю php escape-текст.
Php все данные размещает в виде xml файла и сохраняет уже неверный escape-текст.
К примеру:
Во флеше:
%C3%E4%E5%20%F2%F3%F2%20%E1%E0%E3%3F
а после передаче php в xml:
%D0%93%D0%B4%D0%B5%20%D1%82%D1%83%D1%82%20%D0%B1%D0%B0%D0%B3%3F
подскажите пожалуйста в чём проблема...

gloomyBrain
22.09.2008, 01:53
А самое удивительное знаете что?
А я Вам сейчас покажу:

var s:String="%C3%E4%E5%20%F2%F3%F2%20%E1%E0%E3%3F"
var s2=unescape(s)
trace(s2)

Этот код во Flash CS3 выдаёт ����
(у меня в трейсе это выглядит как белые с чёрным контуром квадратки, а на форуме - как чёрные ромбики со знаком вопроса в середине)

Так вот. Если вместо переменной s поставить вторую приведённую Вами строку, то трудолюбивый трейс выдаёт вот что: Где тут б0°г?

Мне кажется, что
1) Вы перепутали строчки местами - тогда я не знаю чем Вам помочь
2) Что-то не то Вы отправляете

AlexCooper
22.09.2008, 02:13
Вот xml

<?xml version="1.0" encoding="UTF-8"?>
<ID0 Name='www' Image='none' Color='none' ></ID0>
<ID2 text='%D0%A2%D0%B5%D0%BA%D1%81%D1%82%20' font='Times New Roman Cyr' size='14' align='left' thickness='2' alpha='100' rgb='0x000000' fill='0' moveY1='112' moveX1='171' startY='142' startX='68' Object='6' ></ID2>
<ID1 text='%D0%A2%D0%B5%D0%BA%D1%81%D1%82%20' font='Times New Roman Cyr' size='14' align='left' thickness='2' alpha='100' rgb='0x000000' fill='0' startY='121' startX='117' Object='6' ></ID1>
а вот его парсер на AS2
var index:XML= new XML();

var teg:XMLNode=new XMLNode();

System.useCodepage = true;

index.load('http://localhost/www.xml');

index.ignoreWhite=true;

function razbor_xml (xml)
{

if (xml.status != 0)
{
trace ('XML документ содержит ошибку');
return;
}
array = [];
array = xml.childNodes;

for (_root.i = 1; _root.i < array.length; _root.i++)
{
trace(unescape(index.childNodes[_root.i].attributes["text"]));
//creat(index.childNodes[_root.i].attributes["Object"],array[_root.i].nodeName.substring(2,array[_root.i].length));
}
}

index.onLoad = function ()
{
razbor_xml (index);
};

AlexCooper
22.09.2008, 02:17
трасировака показует
Текст
Текст

убираем System.useCodepage = true; и всё работает)))

gloomyBrain
22.09.2008, 03:57
Здорово, что Вы самостоятельно нашли решение проблемы. Это говорит о Вас, как о человеке целеустремлённом, знающем чего он хочет

Тот вопрос, который Вы подняли в теме, и то решение которое Вы нашли слабо соотносятся друг с другом. Что говорит о неверности первого тезиса

не понятно причём тут php и сохранение не того, что было отправлено???
А по поводу useCodePage - проще и надёжнее сам файл index.xml сохранить в кодировке utf-8

AlexCooper
22.09.2008, 06:33
да сначало было подумал что идёт "сбой" при передаче с swf в php. Но трасировка всему голова и всё таки нашёл где не происходит то чего хотелось бы)