Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Автоматический unescape (http://www.flasher.ru/forum/showthread.php?t=100065)

Cepreu4 19.08.2007 11:53

Автоматический unescape
 
Здравствуйте.
Проблема мелкая, но весьма неприятная.
Написал я генератор html страниц для каталога в небольшом интернет магазине. У каждого наименования есть кнопка "Заказать", которая отправляет скрипту данные методом GET. ну примерно так ../order.php?name=Lara%20Croft%32%20Tomb%20Raider&
При добавлении новых наименований через flash'форму всё добавляется как надо, и ВСЕ наименования (в т.ч. которые были добавлены раньше, в предыдущий сеанс) заново переписываются в общий html массив. А вот при чтении этого массива в следующем сеансе работы с каталогом flash автоматически unescap'ит шестнадцатиричные символы и при сохранении каталога записывает в общий массив адреса уже в обычном виде, т.е. ../order.php?name=Lara Croft: Tomb Raider& Что может явится проблемой при передачи данных, методом GET. Про символы кириллицы я уж вообще молчу. Можно ли как нибудь побороть автоматический unescape восьмого флэша??? (в 2004 mx'е я такого косяка не заметил)

etc 19.08.2007 17:39

Проблема существует или вы предполагаете её возможное наличие?

Cepreu4 19.08.2007 21:58

Проблема существует точно. с помощью трэйса я проверил, что массив содержащий шестнадцатиричные символы приходит во флэш декодированным. Вполне возможно что сие действие является результатом приминения комманды System.useCodepage = true; но парадокс в том, что БЕЗ этой команды флэш вообще отсылает скрипту вместо кириллицы непойми чего.

etc 19.08.2007 22:07

Эта строка виновата, но не в декодировании escape-а. Флеш работает с utf-8 (то самое «непойми чего»), но недобросовестный разработчик, посчитав, что в мире бывают только компьютеры с системой Windows, у которых по умолчанию в системе кириллическая кодировка, решил использовать эту строчку, дабы флеш принимал посылал данные скрипту в «правильной» кодировке. А должен был сделать перекодировку входящей utf-8 строки в win-1251 строку и последующим escape-ом.
А изначально надо было вообще отказаться от win-кодировки.

Cepreu4 20.08.2007 05:54

Так как проблему то решить? :)

etc 20.08.2007 09:56

Переделать. Отказаться от GET в пользу POST, убрать useCodepage и использовать тотально utf-8.
Головной боли точно будет меньше.

Cepreu4 20.08.2007 19:24

Так я UTF-8 и использую :) Флэш ведь только с ней и работает. Если убрать useCodepage, флэш (именно флэш) отсылает скрипту каракули вместо кириллицы
От GET'а я отказатся немогу, я же написал - генератор html страниц :)
Вообщем чувствую что придется после чтения переменный во флэш искать подстроку в каждом элементе отпарсеного массива с помощью for i , ескейпить её и переписывать весь массив... уффф

etc 20.08.2007 19:32

Цитата:

Сообщение от Cepreu4
Так я UTF-8 и использую :) Флэш ведь только с ней и работает. Если убрать useCodepage, флэш (именно флэш) отсылает скрипту каракули вместо кириллицы

Вы сами себе противоречите.

Cepreu4 20.08.2007 22:35

Каким образом? Помоему всё правильно :)

etc 20.08.2007 22:54

Неправильно. Использование useCodepage говорит о том, что вы пытаетесь использовать кодировку системы, а не utf-8.

Cepreu4 21.08.2007 02:03

Вот в том то и проблема видите. Я непонимаю почему при использовании стандартной кодировки utf-8 флэш отсылает каракули, поэтому и ставлю кодпэйдж. Извините, если не ясно выразился

Так или иначе - проблема не в этом. Почему всё-таки флэш unescape'ит шестнадцатиричные символы?

etc 21.08.2007 02:13

Если честно, то я так и не понял, на какой именно стадии происходит перекодировка. Если при отправке GET, то, собственно, откуда она возьмется, если ею занимается браузер.

Cepreu4 21.08.2007 02:37

Нет, обратное декодирование гексосимволов осуществляет как раз таки флэш при чтении ранее сохраненного каталога продукции.
То беж проблема не в серверной части 100%! Косячит флэш

iNils 21.08.2007 02:52

Мой скромный опыт говорит, что косячет не флеш, а все остальное.
Сделайте тестовую страницу и сюда выложите линк на нее.

etc 21.08.2007 02:53

В общем и целом, вы нихрена не показали проблему, а только описали какие-то симптомы, которые в целом не создают никакой конкретной картины.

Cepreu4 21.08.2007 04:05

Уффф... ладно, опишу последовательность действий
Читайте и делайте выводы.

1. С сервера в окне браузера открывается флэш клиент

2. В него загружается сырой массив (под массивом я подразумеваю строку в несколько мегабайт) ранее добаленных наименований, который хранится в текстовике на сервере

3. Во флэше загруженная строка парсится в отдельные элементы массива и принимает вообщем удобный для работы вид.

4. Я добавляю ещё несколько наименований которые собираются в html-отформатированную строку, добавляются к массиву наименований и сортируются. В процессе преобразования наименования в html-отформатированный код название вновь добавленного наименования в определенном месте строки принимает вид шестнадцатиричной кодировки.

5. Далле жму кнопку "принять". Флэш осуществляет кое какие операции по разделению элементов массива на разные страницы каталога, собирает полноценные html-страницы, генерирует новые переменные для LoadVars, генерирует навигационную панель и наконец отсылает всё это скрипту

6. Скрипт принимает данные из флэша и с помощью несложных команд и цикла for i генерирует на сервере полноценные html-страницы каталога а заодно записывает обновленную сырую строку наименований в тестовик, из которого в следующий раз эта строка загрузится во флэш (см. пункт 2)

7. Открываю свеже сгенерированную страницу каталога

8. Навожу курсор на кнопку "заказать" под свеже добавленным наименованием. Внизу браузера высвечивается правильная ссылка типа GET с шестнадцатиричными символами

9. Закрываю флэш клиент

10. Открываю его снова

11. Сразу же нажимаю кнопку принять

12. Флэш заново отсылает все данные. Скрипт снова генерирует только что созданные страницы

13. Обнавляю страницу каталога, навожу на ту же самую кнопку "заказать" и вижу что вместо шестнадцатиричной кодировки - названия наименований как они есть, с пробелами и кириллицей, что НЕхорошо

etc 21.08.2007 10:26

А ссылку дать никак? Хотя бы в приват.
Пункт 2 никакой информации о способе передачи не дает.
3 пункт тоже ни о чем не говорит.
Да и все остальное в том же духе.


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

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