Просмотр полной версии : flash + unicode
burvinkle
02.08.2005, 00:43
Помогите с загрузкой переменных в unicode из файла. В файле у меня набрано
var1=100&var2=новая (ТУТ ТЕКСТ НАПИСАН В UNICODE)
Но у unicode символы начинаются с & - что является разделителем переменной в текстовом файле.
должно быть чтото типа
var1=100
var2=новая
Но ведь символ & Является разделителем между переменными, и unicode не
считывается, потому , что он думает , что там просто следующие
переменные...
Что делать ...????
Причем, эти переменные нужно загрузить только из текстового файла.
Пиши спокойно -
var1=100&var2=новая
а затем весь файл сохраняй в Уникоде...
может проще будет устроить замену & на допустим $, в текстовом файле, а при считывании переводить обратно?
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 еще и правильно схавал переменную
Вместо & строке пиши %26
Пример:
q=123&w=%26456&e=789
burvinkle
02.08.2005, 02:05
а вот и не хавает такое флеш :/
ты ошибаешься. данная комбинация работает.
burvinkle
02.08.2005, 12:49
покажи пример пжалста...
потому что я меня не работает...
флеш получает у себя -- не чистый уникод, а просто его символьное представление -- %26№226 он выводит потом в формее как 226 :/
burvinkle
02.08.2005, 14:41
Проблема в том, что флеш просто показывает символ &456, а он должен этот символ перевести в значение unicode символа.
Тогда тебе надо 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
а можно рабочий пример, а то я в упор не могу его заставить сделать перекодировку... правильно.
Не поможет... :(
Логика тут такая:
В файле есть переменная 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". Тут же это не проходит.
Вариант ... третий уже :)
В файле 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 и квадраты.
1. undefined потому что ты публикуешь под 7-ой флеш, а я под 6-ой. Поэтому тебе надо добавить вначале a="";
2. Квадраты потому, что вид 0xZZZZ предназначен для 16-ричной системы написания. Если ты используешь десятичную, то убери везде 0x, пиши просто ZZZZ.
burvinkle
02.08.2005, 18:10
большое спасиба.
весьма признателен вам всем за помощь... этот топ обязательно нужно вписать в список факовых топиков.
я надеюсь, что все же существует более короткое решение, а не через массив и цикл.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.