![]() |
Автоматический 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'е я такого косяка не заметил) |
Проблема существует или вы предполагаете её возможное наличие?
|
Проблема существует точно. с помощью трэйса я проверил, что массив содержащий шестнадцатиричные символы приходит во флэш декодированным. Вполне возможно что сие действие является результатом приминения комманды System.useCodepage = true; но парадокс в том, что БЕЗ этой команды флэш вообще отсылает скрипту вместо кириллицы непойми чего.
|
Эта строка виновата, но не в декодировании escape-а. Флеш работает с utf-8 (то самое «непойми чего»), но недобросовестный разработчик, посчитав, что в мире бывают только компьютеры с системой Windows, у которых по умолчанию в системе кириллическая кодировка, решил использовать эту строчку, дабы флеш принимал посылал данные скрипту в «правильной» кодировке. А должен был сделать перекодировку входящей utf-8 строки в win-1251 строку и последующим escape-ом.
А изначально надо было вообще отказаться от win-кодировки. |
Так как проблему то решить? :)
|
Переделать. Отказаться от GET в пользу POST, убрать useCodepage и использовать тотально utf-8.
Головной боли точно будет меньше. |
Так я UTF-8 и использую :) Флэш ведь только с ней и работает. Если убрать useCodepage, флэш (именно флэш) отсылает скрипту каракули вместо кириллицы
От GET'а я отказатся немогу, я же написал - генератор html страниц :) Вообщем чувствую что придется после чтения переменный во флэш искать подстроку в каждом элементе отпарсеного массива с помощью for i , ескейпить её и переписывать весь массив... уффф |
Цитата:
|
Каким образом? Помоему всё правильно :)
|
Неправильно. Использование useCodepage говорит о том, что вы пытаетесь использовать кодировку системы, а не utf-8.
|
Вот в том то и проблема видите. Я непонимаю почему при использовании стандартной кодировки utf-8 флэш отсылает каракули, поэтому и ставлю кодпэйдж. Извините, если не ясно выразился
Так или иначе - проблема не в этом. Почему всё-таки флэш unescape'ит шестнадцатиричные символы? |
Если честно, то я так и не понял, на какой именно стадии происходит перекодировка. Если при отправке GET, то, собственно, откуда она возьмется, если ею занимается браузер.
|
Нет, обратное декодирование гексосимволов осуществляет как раз таки флэш при чтении ранее сохраненного каталога продукции.
То беж проблема не в серверной части 100%! Косячит флэш |
Мой скромный опыт говорит, что косячет не флеш, а все остальное.
Сделайте тестовую страницу и сюда выложите линк на нее. |
В общем и целом, вы нихрена не показали проблему, а только описали какие-то симптомы, которые в целом не создают никакой конкретной картины.
|
Уффф... ладно, опишу последовательность действий
Читайте и делайте выводы. 1. С сервера в окне браузера открывается флэш клиент 2. В него загружается сырой массив (под массивом я подразумеваю строку в несколько мегабайт) ранее добаленных наименований, который хранится в текстовике на сервере 3. Во флэше загруженная строка парсится в отдельные элементы массива и принимает вообщем удобный для работы вид. 4. Я добавляю ещё несколько наименований которые собираются в html-отформатированную строку, добавляются к массиву наименований и сортируются. В процессе преобразования наименования в html-отформатированный код название вновь добавленного наименования в определенном месте строки принимает вид шестнадцатиричной кодировки. 5. Далле жму кнопку "принять". Флэш осуществляет кое какие операции по разделению элементов массива на разные страницы каталога, собирает полноценные html-страницы, генерирует новые переменные для LoadVars, генерирует навигационную панель и наконец отсылает всё это скрипту 6. Скрипт принимает данные из флэша и с помощью несложных команд и цикла for i генерирует на сервере полноценные html-страницы каталога а заодно записывает обновленную сырую строку наименований в тестовик, из которого в следующий раз эта строка загрузится во флэш (см. пункт 2) 7. Открываю свеже сгенерированную страницу каталога 8. Навожу курсор на кнопку "заказать" под свеже добавленным наименованием. Внизу браузера высвечивается правильная ссылка типа GET с шестнадцатиричными символами 9. Закрываю флэш клиент 10. Открываю его снова 11. Сразу же нажимаю кнопку принять 12. Флэш заново отсылает все данные. Скрипт снова генерирует только что созданные страницы 13. Обнавляю страницу каталога, навожу на ту же самую кнопку "заказать" и вижу что вместо шестнадцатиричной кодировки - названия наименований как они есть, с пробелами и кириллицей, что НЕхорошо |
А ссылку дать никак? Хотя бы в приват.
Пункт 2 никакой информации о способе передачи не дает. 3 пункт тоже ни о чем не говорит. Да и все остальное в том же духе. |
| Часовой пояс GMT +4, время: 21:39. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.