PDA

Просмотр полной версии : flash + unicode


burvinkle
02.08.2005, 00:43
Помогите с загрузкой переменных в unicode из файла. В файле у меня набрано
var1=100&var2=новая (ТУТ ТЕКСТ НАПИСАН В UNICODE)

Но у unicode символы начинаются с & - что является разделителем переменной в текстовом файле.

должно быть чтото типа
var1=100
var2=новая

Но ведь символ & Является разделителем между переменными, и unicode не
считывается, потому , что он думает , что там просто следующие
переменные...
Что делать ...????

Причем, эти переменные нужно загрузить только из текстового файла.

Штрек
02.08.2005, 00:57
Пиши спокойно -
var1=100&var2=новая
а затем весь файл сохраняй в Уникоде...

zapor
02.08.2005, 01:11
может проще будет устроить замену & на допустим $, в текстовом файле, а при считывании переводить обратно?

burvinkle
02.08.2005, 01:15
проблема в том , что переменные генерятся php скриптом , и выходит чтото типа

<?
echo "var1=100&";
echo "var2=&****&";
echo "var3=her";
?>

**** - это код unicode

И получается , что var2 определяется как undefined из-за того, что флеш думает, что после знака = идет название следующей переменной

burvinkle
02.08.2005, 01:16
А как такое организовать, чтобы Flash еще и правильно схавал переменную

iNils
02.08.2005, 01:42
Вместо & строке пиши %26
Пример:
q=123&w=%26456&e=789

burvinkle
02.08.2005, 02:05
а вот и не хавает такое флеш :/

iNils
02.08.2005, 12:32
ты ошибаешься. данная комбинация работает.

burvinkle
02.08.2005, 12:49
покажи пример пжалста...
потому что я меня не работает...
флеш получает у себя -- не чистый уникод, а просто его символьное представление -- %26№226 он выводит потом в формее как 226 :/

iNils
02.08.2005, 13:15
вот...

burvinkle
02.08.2005, 14:41
Проблема в том, что флеш просто показывает символ &456, а он должен этот символ перевести в значение unicode символа.

iNils
02.08.2005, 15:01
Тогда тебе надо Unecode символы в файле сохранять не с &, а с \u
Пример:
\u1234

burvinkle
02.08.2005, 15:25
Я наверное уже достал.
Мой php скрипт уже генерирует такой ответ.
id1=36&name1=\u1085;\u1086;\u1074;\u1086;\u1089;\u1090;\u1080;&soob1=Y

но такой юникод -- не хочет распознаваться.

DeadMorozz
02.08.2005, 16:28
А попробуйте перед кодом написать
System.useCodepage = false;
Мне помогало ;)

burvinkle
02.08.2005, 16:41
а можно рабочий пример, а то я в упор не могу его заставить сделать перекодировку... правильно.

iNils
02.08.2005, 16:43
Не поможет... :(
Логика тут такая:
В файле есть переменная var1=\u0001, она грузится и значение переменной становится строкой. Это значит что ее вид будет не "\u0001", а "\\u0001". Вот она проблема, нам нужен символ, а у нас есть строка.

Попробуйте написать и запустить (в mx попытка запустить автоформатирование вешало программу, mx 2004 выжил, а все потому что mx пытается отобразить символ для этого кода, а 2004 нет. если напишите trace ("\u0167"), то после форматирования mx выдаст "t"):
trace ("\u0001");
trace ("\u" + "0001");
Результат различный.
В свое время мне надо было строку "\\nнекий текст\\nнекий текст\\nнекий текст" преобразовать в "\nнекий текст\nнекий текст\nнекий текст". Это удалось благодаря замене "\\n" на "\n". Тут же это не проходит.

iNils
02.08.2005, 17:03
Вариант ... третий уже :)

В файле unicode пишем в виде:
q=0x0064,0x0186,0x1074,0x1086,0x1089,0x1090,0x1080

Во флеше обрабатываем его так:
r = q.split (",");
for (i = 0; i < r.length; i++) {
a += String.fromCharCode (r[i]);
}
trace (a);

burvinkle
02.08.2005, 17:17
Вот пример , на твое предложение, в trace выдает
undefined и квадраты.

iNils
02.08.2005, 17:38
1. undefined потому что ты публикуешь под 7-ой флеш, а я под 6-ой. Поэтому тебе надо добавить вначале a="";
2. Квадраты потому, что вид 0xZZZZ предназначен для 16-ричной системы написания. Если ты используешь десятичную, то убери везде 0x, пиши просто ZZZZ.

burvinkle
02.08.2005, 18:10
большое спасиба.
весьма признателен вам всем за помощь... этот топ обязательно нужно вписать в список факовых топиков.

iNils
02.08.2005, 18:20
я надеюсь, что все же существует более короткое решение, а не через массив и цикл.