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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.07.2009, 02:29
cooler_ua вне форума Посмотреть профиль Отправить личное сообщение для cooler_ua Найти все сообщения от cooler_ua
  № 1  
Ответить с цитированием
cooler_ua

Регистрация: May 2009
Сообщений: 83
По умолчанию CP1251->UTF-8->CP1251

Добрый вечер.

Дорогие друзья пордскажите, пожалуйста, как строчку во Флеше можно перекодировать (см. тему).

Спасибо.

Старый 12.07.2009, 03:04
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 2  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
вроде как спомощью ByteArray

Старый 12.07.2009, 06:58
willis83 вне форума Посмотреть профиль Отправить личное сообщение для willis83 Найти все сообщения от willis83
  № 3  
Ответить с цитированием
willis83
 
Аватар для willis83

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
таких функций как например в php, в AS3 нет. Данные вы наверное получаете от скрипта, поэтому лучше это делать на сервере.

Старый 12.07.2009, 10:16
cooler_ua вне форума Посмотреть профиль Отправить личное сообщение для cooler_ua Найти все сообщения от cooler_ua
  № 4  
Ответить с цитированием
cooler_ua

Регистрация: May 2009
Сообщений: 83
Дело в том, что данные вводятся непосредственно с клавиатуры прямо во флеш приложении. И потом часть данных нужно отправить в одной кодировке, часть в другой. И нет возможности по определенным причинам перекодировать эти данные на сервере.

Старый 12.07.2009, 11:06
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 5  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Из 1251 в UTF
Код AS3:
var loader:URLLoader = new URLLoader(new URLRequest("1251.txt"));
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
 
function loaderCompleteHandler(event:Event):void {
	var ba:ByteArray = loader.data as ByteArray;
	var str = new String(ba.readMultiByte(ba.length, 'windows-1251'));
	trace(str);
}
из utf в 1251
Код AS3:
package  
{
	import flash.display.*;
	import flash.text.*;
	import flash.events.*;
	import flash.geom.*;
 
	import fl.events.*;
	import fl.controls.*;
 
	import flash.net.*;
	import flash.utils.*;
 
	import fl.controls.dataGridClasses.*;
	import fl.data.*;
	import fl.controls.listClasses.*;
	/**
	 * ...
	 * @author http://www.murmadillo.tut.su/
	 */
	public class DocSaveAs1251 extends Sprite
	{
		private var txt:TextArea, saveBtn:Button, loader:URLLoader,
		strUTF:String='абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ',
		hexWIN1251:Array = [0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 
			0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 
			0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0xC0, 0xC1, 0xC2, 0xC3, 
			0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 
			0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 
			0xDE, 0xDF],
		charUTFArr:Array = [];
		public function DocSaveAs1251() 
		{
			graphics.beginFill(0xffffff);
			graphics.drawRect(0, 0, 550, 400);
			addChild(txt = new TextArea);
			txt.setSize(500, 350);
			txt.move(25, 10);
 
			addChild(saveBtn = new Button);
			saveBtn.label = 'сохранить как win1251';
			saveBtn.move(250, 370);
			saveBtn.width = 200;
			saveBtn.addEventListener(MouseEvent.CLICK, saveBtnClickHandler);
 
			loader = new URLLoader(new URLRequest("utf.txt"));
			loader.dataFormat = URLLoaderDataFormat.BINARY;
			loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
 
			var i:int;
			for (i = 0; i < strUTF.length; i++) charUTFArr[i] = strUTF.charAt(i);
		}
 
		private function loaderCompleteHandler(event:Event):void {
			txt.text = loader.data;
		}
 
		private function saveBtnClickHandler(evt:MouseEvent):void {
			var ba:ByteArray;
			var saveFile:FileReference;
			ba = new ByteArray();
			var i:int, j:int;
			var strUtf:String = txt.text;
			var ch:String;
			var findTr:Boolean;
			var rStr:String = '1234567890 - +~ !@#$ % ^ & * ()_ = ":;|\/?!<>{}[]';
			var code:int;
			for (i = 0; i < strUtf.length; i++) {
				findTr = false;
				ch = strUtf.charAt(i);
				for (j = 0; j < charUTFArr.length; j++) {
					if (ch == charUTFArr[j]) {
						ba.writeByte(hexWIN1251[j]);
						findTr = true;
						break;
					}
				}
				if (!findTr) {
					code = ch.charCodeAt();
					if (new RegExp(ch).test(rStr)) {
						//trace('testOK');
						ba.writeByte(code);
					}
					//a-z A-Z
					if ((code >= 97 && code <= 122) || (code >= 65 && code <= 90)) ba.writeByte(code);
					if (code==13) ba.writeByte(10);//Enter
					if (code==9) ba.writeByte(9);//табуляция
				}
			}
			saveFile = new FileReference;
			try {
				saveFile.save(ba,"text1251.txt");
			}
			catch (e:Error) { trace(e) }
		}
	}
 
}

Старый 12.07.2009, 11:08
cooler_ua вне форума Посмотреть профиль Отправить личное сообщение для cooler_ua Найти все сообщения от cooler_ua
  № 6  
Ответить с цитированием
cooler_ua

Регистрация: May 2009
Сообщений: 83
Спасибо огромное!

Старый 12.07.2009, 13:32
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Alex Lexcuk, да вы любитель велосипеды изобретать
А средствами всё того же ByteArray вы кодировку изменить не смогли? Или вы по книжке до метода writeMultiByte ещё не дошли?

Старый 12.07.2009, 13:35
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 8  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Alex Lexcuk, а writeMultyByte сломался?

Старый 12.07.2009, 15:01
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 9  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
>>а writeMultyByte сломался?
Нет, меня просто прикалует печатать
Код AS3:
package  
{
	import flash.display.*;
	import flash.text.*;
	import flash.events.*;
	import flash.geom.*;
 
	import fl.events.*;
	import fl.controls.*;
 
	import flash.net.*;
	import flash.utils.*;
 
	/**
	 * ...
	 * @author http://www.murmadillo.tut.su/
	 */
	public class DocSaveAs1251 extends Sprite
	{
		private var txt:TextArea, saveBtn:Button, loader:URLLoader;
 
		public function DocSaveAs1251() 
		{
			addChild(txt = new TextArea);
			txt.setSize(500, 350);
			txt.move(25, 10);
 
			addChild(saveBtn = new Button);
			saveBtn.label = 'сохранить как win1251';
			saveBtn.move(250, 370);
			saveBtn.width = 200;
			saveBtn.addEventListener(MouseEvent.CLICK, saveBtnClickHandler);
 
			loader = new URLLoader(new URLRequest("utf.txt"));
			loader.dataFormat = URLLoaderDataFormat.BINARY;
			loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
		}
 
		private function loaderCompleteHandler(event:Event):void {
			txt.text = loader.data;
		}
 
		private function saveBtnClickHandler(evt:MouseEvent):void {
			var ba:ByteArray;
			var saveFile:FileReference;
			ba = new ByteArray();
			var strUtf:String = txt.text;
 
			ba.writeMultiByte(strUtf, 'windows-1251');
 
			saveFile = new FileReference;
			try {
				saveFile.save(ba,"text1251.txt");
			}
			catch (e:Error) { trace(e) }
		}
	}
 
}
Так ж намного меньше.
Я ж многово не знаю, а тот скриптик из Си.
А книги мне не надо, и так можно разобраться.

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

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

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


 


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


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