<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
 "http://www.feedcat.net/dtd/rss-0.91.dtd">
<rss version="0.91">
<channel>
<title>x-dao</title>
<link>http://x-dao.blogspot.com/</link>
<language>en</language>
<item>
<title>Афоризм</title>
<link>http://x-dao.blogspot.com/2009/11/blog-post.html</link>
<description>&lt;p&gt;Долготерпеливый лучше храброго, и владеющий собою лучше завоевателя города. &lt;span style=&quot;FONT-SIZE: 12px; COLOR: #cccccc&quot;&gt;(Царь Соломон)&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743482708399781183-3391045232969490765?l=x-dao.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
</item>
<item>
<title>Flex 3: дружим с cp251</title>
<link>http://x-dao.blogspot.com/2009/09/flex-3-cp251.html</link>
<description>&lt;p&gt;&lt;strong&gt;Задача&lt;/strong&gt;: есть два чат клиента. Первый реализован на Action Script 2, второй на Action Script 3. Каждый посылает на сервер сообщение в виде escaped строки. В каждом клиенте значение useCodePage установлено в true:&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-js&quot;&gt;&lt;br /&gt;System.useCodePage = true;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Но в среде Flex 3 (Action Script 3.0) кодировка CP1252 принимается за родную. Тогда как Flash IDE (AS 2.0) берет CP1251 в качестве базовой, что влияет на результат одного и того же действия:&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-js&quot;&gt;&lt;br /&gt;// Action Script 3.0&lt;br /&gt;System.useCodePage = true;&lt;br /&gt;&lt;br /&gt;var str:String = &quot;Строка&quot;;&lt;br /&gt;trace(escape(str)); //%u0421%u0442%u0440%u043E%u043A%u0430&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Action Script 2.0&lt;br /&gt;System.useCodepage = true;&lt;br /&gt;&lt;br /&gt;var str:String = &quot;Строка&quot;;&lt;br /&gt;trace(escape(str)); //%D1%F2%F0%EE%EA%E0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Потом происходит обмен, и функция unescape() в результате показывает совсем не то, что нужно.&lt;a name='more'&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Ограничение&lt;/strong&gt;: модифицировать возможно только Action Script 3.0 клиент.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Решение&lt;/strong&gt;: воспользоваться byteArray.&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-js&quot;&gt;&lt;br /&gt;// Action Script 3.0&lt;br /&gt;private function convertIncomingMessage($data:String):String {&lt;br /&gt;    var b:ByteArray = new ByteArray();&lt;br /&gt;    for ( var i:uint = 0; i&amp;lt;$data.length; i++ ) {&lt;br /&gt;        b[i] = $data.charCodeAt(i);&lt;br /&gt;    }&lt;br /&gt;    b.position = 0;&lt;br /&gt;    return b.readMultiByte( b.bytesAvailable, 'windows-1251' );               &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private function convertOutgoingMessage($data:String):String {&lt;br /&gt;    var b:ByteArray = new ByteArray();&lt;br /&gt;    b.writeMultiByte($data, &quot;windows-1251&quot;);&lt;br /&gt;    return b.toString();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;После чего полученную строку успешно преобразовываем либо в читаемый текст, либо в &quot;нужную&quot; escape-последовательность.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/743482708399781183-5910392352885936078?l=x-dao.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
</item>
</channel>
</rss>