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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.07.2008, 12:22
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 11  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Leonik, Flash работает только с UTF-8. никакой ISO, у вас быть не могло. rquest.requestHeaders - это строчку флэшу не командир.

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

Регистрация: Jul 2005
Сообщений: 304
Отправить сообщение для Ноябрь с помощью ICQ
Цитата:
он юзает ISO
гы гы
__________________
Пора бы мне уже умнеть..

Старый 09.07.2008, 12:29
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 13  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
а по-моему, если выставить useCodepage в true, то будет отсылаться не UTF-8, a ISO... соответствующая юзерским настройкам...
вечером проверю, над на работу идти =)
__________________
Hell is the possibility of sanity

Старый 12.07.2008, 01:03
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 14  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Вот, двое суток не ел и не спал, практически =)))
Собственно, что это все делает:
Позволяет во флешке закодировать ХМЛ в одну из быбраных кодировок, отослать ПХП и в ПХП мы можем узнать в какой кодировке к нам пришла строка и по желанию конвертнуть ее во что-то другое. Немного бесцельное занятие, т.как я бы просто все делал в УТФ-8, но иногда бывает нужно (фз зачем, но мало ли), чтобы ХМЛ на сервере сохранился в отличной от УТФ-8 кодировке... Вобщем, вот:
Код:
package
{
	import flash.display.Sprite;
	import org.wvxvw.phputils.XMLSender;
	
	public class Main extends Sprite
	{
		public var xs:XMLSender;
		public var testXML:XML = 
		<xml>
			<English>
			English text
			</English>
			<Russian>
			текст по - русски
			</Russian>
			
		</xml>;
		
		public function Main():void
		{
			xs = new XMLSender();
			xs.sendXML(testXML, 'http://localhost/flashtest/flashreceiver.php', XMLSender.WINDOWS_1251);
		}
	}
}
Код:
/**
* ...
* @author wvxvw
*/
package  org.wvxvw.phputils
{
	import flash.events.EventDispatcher;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.SecurityErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequestMethod;
	import flash.net.URLRequestHeader;
	import flash.utils.ByteArray;
	import flash.utils.Endian;
	
	public class XMLSender extends EventDispatcher
	{
		public static const US_ASCII:String = 'us-ascii';
		public static const UTF_8:String = 'utf-8';
		public static const ISO_8859_5:String = 'iso-8859-5';
		public static const KOI8_R:String = 'koi8-r';
		public static const WINDOWS_1251:String = 'windows-1251';
		
		private var ur:URLRequest;
		private var ul:URLLoader;
		private var ba:ByteArray;
		private var xml:XML;
		private var encodedString:String;
		
		public function XMLSender() 
		{
			super();
			ul = new URLLoader();
			ul.dataFormat = URLLoaderDataFormat.BINARY;
			ul.addEventListener(Event.COMPLETE, handleComplete);
			ul.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);
			ul.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecurityError);
		}
		public function sendXML(source:Object, url:String, encoding:String = UTF_8, endian:String = Endian.LITTLE_ENDIAN):void
		{
			try
			{
				xml = new XML(source);
			} catch (e:Error) {
				trace('unable to convert to XML');
			}
			encodedString = xml.toXMLString();
			ur = new URLRequest(url);
			var h:URLRequestHeader = new URLRequestHeader('Content-Type', 'application/octet-stream');
			ur.method = URLRequestMethod.POST;
			ur.requestHeaders.push(h);
			ba = new ByteArray();
			ba.endian = endian;
			trace(encodedString);
			ba.writeUTFBytes(encoding);
			ba.position = 20;
			ba.writeMultiByte(encodedString, encoding);
			ba.position = 0;
			ur.data = ba;
			ul.load(ur);
		}
		public function handleComplete(evt:Event):void
		{
			trace('complete', ul.data);
		}
		public function handleIOError(evt:Event):void
		{
			trace('IO', evt);
		}
		public function handleSecurityError(evt:Event):void
		{
			trace('security', evt);
		}
	}
	
}
Код:
<?php
mb_internal_encoding("UTF-8");
mb_regex_encoding("UTF-8");
mb_http_output("UTF-8");
ob_start("mb_output_handler");
require_once("includes/receiver.inc");
$rec = new Receiver();
$bom = "\xEF\xBB\xBF";
print $bom . $rec->toString();
?>
Код:
<?php
class Receiver extends DOMDocument {
	public static $US_ASCII = "us-ascii";
	public static $US_ASCII_PHP = "cp1252";
	
	public static $UTF_8 = "utf-8";
	public static $UTF_8_PHP = "UTF-8";
	
	public static $ISO_8859_5 = "iso-8859-5";
	public static $ISO_8859_5_PHP = "ISO-8859-5";
	
	public static $KOI8_R = "koi8-r";
	public static $KOI8_R_PHP = "KOI8-R";
	
	public static $WINDOWS_1251 = "windows-1251";
	public static $WINDOWS_1251_PHP = "Windows-1251";
	
	public $src;
	public $enc;
	
	function __construct() {
		parent::__construct("1.0", "utf-8");
		if(isset($GLOBALS["HTTP_RAW_POST_DATA"])){
			$ienc = mb_substr($GLOBALS["HTTP_RAW_POST_DATA"], 0 , 20, Receiver::$UTF_8_PHP);
			$ienc = trim($ienc);
			switch($ienc) {
				case Receiver::$UTF_8:
					$this->enc = Receiver::$UTF_8_PHP;
					break;
				case Receiver::$US_ASCII:
					$this->enc = Receiver::$US_ASCII_PHP;
					break;
				case Receiver::$ISO_8859_5:
					$this->enc = Receiver::$ISO_8859_5_PHP;
				case Receiver::$KOI8_R:
					break;
				case Receiver::$WINDOWS_1251:
					$this->enc = Receiver::$WINDOWS_1251_PHP;
					break;
				default:
					exit("unrecognised encoding " . $ienc);
			}
			$lnt = mb_strlen($GLOBALS["HTTP_RAW_POST_DATA"], $ienc) - 20;
			$this->src = mb_substr($GLOBALS["HTTP_RAW_POST_DATA"], 20, $lnt, $this->enc);
			$this->src = iconv($this->enc, Receiver::$UTF_8_PHP, $this->src);
			$sxml = simplexml_load_string($this->src);
			$dxml = $this->importNode(dom_import_simplexml($sxml), true);
			$this->appendChild($dxml);
		} else {
			$nodata = $this->appendChild($this->createElement("noData"));
			$nodata->appendChild($this->createTextNode("No data posted!"));
		}
	}
	/**
	 * @return string
	 */
	function toString() {
    	return $this->saveXML();
	}
}
?>
Есси честно, то, возможно можно как-то по-проще... но, застрелите меня, я не знаю как...

ЗЫ. Еще одно полезное применение: можно из этой штуки сделать трейсер для ФД, например, для того, чтобы корректно выводил русские тексты (для тех, у кого вторя дефолтная раскладка клавиатуры не русская).
Т.е. то, что нужно вывести в трейс отсылаем ПХП скрипту, он это конвертит / логирует, и возвращает в другой кодировке. Так что можно будет и в ФД трейс посмотреть, и потом почитать, если что =)


Последний раз редактировалось wvxvw; 12.07.2008 в 01:09.
Старый 16.07.2008, 05:36
Ноябрь вне форума Посмотреть профиль Отправить личное сообщение для Ноябрь Посетить домашнюю страницу Ноябрь Найти все сообщения от Ноябрь
  № 15  
Ответить с цитированием
Ноябрь
 
Аватар для Ноябрь

Регистрация: Jul 2005
Сообщений: 304
Отправить сообщение для Ноябрь с помощью ICQ
если перекодировать, то зачем хмл.
закачиваем (считай уже байтмассив) и сходу конвертируем в текст в правильной кодировке.
__________________
Пора бы мне уже умнеть..

Старый 16.07.2008, 09:39
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 16  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну так вопрос был про то, как послать ХМЛ, а не текст =)
__________________
Hell is the possibility of sanity

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

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

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


 


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


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