Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.10.2010, 17:58
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 1  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
По умолчанию UILoader и кириллица: ошибка при загрузке.

Добрый день, господа флешеры, надеюсь на вашу помощь.

В чем проблема:
Как можно понять по названию темы, когда я использую для указания пути загрузки кириллицу, возникает ошибка, которая слегка ставит меня в ступор.

Вот класс, в котором все происходит:

Код AS3:
package src.UI {
	import fl.containers.UILoader;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.events.SecurityErrorEvent;
 
	public class Book extends EventDispatcher{
		public var pages : Vector.<UILoader>;
		public var name  : String;
 
		private var totalPages : int;
		private var loadedPages : int;
 
		public function Book(_name : String, _sourcePath : String, _totalPages: int){
		  var urlRequest : URLRequest;
			var newPage    : UILoader;
 
			pages = new Vector.<UILoader>();
			totalPages = _totalPages;
			name = _name;
			for(var i : int = 1; i <= totalPages; i++){
				urlRequest = new URLRequest(_sourcePath + "page" + i.toString() + ".swf");
			  newPage    = new UILoader();
			  newPage.addEventListener(IOErrorEvent.IO_ERROR, IOErrorHandler);
				newPage.addEventListener(ProgressEvent.PROGRESS, progressHandler);
				newPage.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
				newPage.addEventListener(Event.OPEN, openHandler);
				newPage.autoLoad = false;
				newPage.source   =  urlRequest.url;
				pages.push(newPage);
			}
		  trace("totalPages = " + totalPages + " sourcePath " + _sourcePath);
		}
 
		/// methods
 
		public function load():void{
		 	pages[0].addEventListener(Event.COMPLETE, loadCompleteHandler);
			pages[0].load();
		}
 
		/// private functions
 
		private function loadCompleteHandler(event : Event):void{
		  trace(event);
			event.currentTarget.removeEventListener(Event.COMPLETE, loadCompleteHandler);
			loadedPages++;
			if(loadedPages == totalPages){
			  dispatchEvent(new Event(Event.COMPLETE));
			} else {
				pages[loadedPages].addEventListener(Event.COMPLETE, loadCompleteHandler);
			  pages[loadedPages].load();
			}
		}
 
		private function progressHandler(event : ProgressEvent):void{
			trace(event);
		}
 
		private function IOErrorHandler(event : IOErrorEvent):void{
			trace(event);
		}
 
		private function openHandler(event : Event):void{
		  trace(event);
		}
 
		private function securityErrorHandler(event :SecurityErrorEvent):void{
		  trace(event);
		}
	}
}
Когда в пути нет русских букв все отлично работает, но когда они есть выскакивает, например, такая ошибка:

Error opening URL 'http://127.0.0.1/denwer/pdfreader/users/chuwy/convertedBooks/Контрольные задания(2)/page1.swf'
[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2036: Загрузка не завершена. URL: http://127.0.0.1/denwer/pdfreader/us...ks/Контрольные задания(2)/page1.swf"]

Но ей предшествует вывод:

[ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=0 bytesTotal=2112]
[ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=798 bytesTotal=2112]
[ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=2112 bytesTotal=2112]

Что говорит о том, что грузиться то все-таки файл грузится.
Я могу, конечно, обойтись без кириллицы, транслитилируя пути, но очень интересно почему такое происходит.
Подскажите пожалуйста, что я делаю не так.


Последний раз редактировалось ChuwY; 04.10.2010 в 18:01.
Старый 04.10.2010, 18:07
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Я думаю, грузится хтмл файл, в котором написано с форматированием и пр "ОШИБКА 404, НЕТ ТУТ ТАКОГО". Потому что надо урленкодить путь. Вродь escapeMultiByte делает что надо
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 04.10.2010, 18:08
campu вне форума Посмотреть профиль Отправить личное сообщение для campu Найти все сообщения от campu
  № 3  
Ответить с цитированием
campu
[+1 02.04.10]
 
Аватар для campu

Регистрация: Apr 2009
Адрес: Cambodia
Сообщений: 17
аналогичная проблема. гружу файлы с русскими названиями на сервер, затем отображая их внутри флеша. для загрузки на сервер использую FileReference + пхп. файлы на сервер загружаются, пхп отлично загружает по русски на сервер, а вот флеш не читает оттуда, обращаясь к файлу с русским названием. знающие кодеры, дайте совет на "вечный" вопрос: Что делать? )

Старый 04.10.2010, 18:14
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 4  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Кстати, кстати, кстати да.
Не заметил сразу, что размер ошибочного ответа всегда один и тот же и, что характерно, не соответствует размеру файла =) Виноват, исправлюсь.
Сейчас попробую последовать совету.



Код AS3:
System.useCodePage = true;
urlRequest = new URLRequest(unescapeMultiByte(_sourcePath));
И проблема решена, как и ожидалось.
Еще раз большое спасибо!


Последний раз редактировалось ChuwY; 04.10.2010 в 19:24.
Старый 05.10.2010, 00:30
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от -De- Посмотреть сообщение
Потому что надо урленкодить путь. Вродь escapeMultiByte делает что надо
А разве браузерный движок не делает urlEncode?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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