<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dev.iordanov.net &#187; unicode</title>
	<atom:link href="http://dev.iordanov.net/archives/tag/unicode/feed" rel="self" type="application/rss+xml" />
	<link>http://dev.iordanov.net</link>
	<description></description>
	<lastBuildDate>Sun, 31 May 2009 18:07:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flash player linux and unicode.</title>
		<link>http://dev.iordanov.net/archives/15</link>
		<comments>http://dev.iordanov.net/archives/15#comments</comments>
		<pubDate>Sun, 31 May 2009 17:52:22 +0000</pubDate>
		<dc:creator>ivan</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[unicode]]></category>

		<guid isPermaLink="false">http://dev.iordanov.net/?p=15</guid>
		<description><![CDATA[Writing not english characters in swf applications under linux is a well known problem. These days I had some spare time to inspect it and try to fix it. So far I&#8217;ve a solution. I don&#8217;t know if this one is the best one or if there is a better way but I&#8217;m not an [...]]]></description>
			<content:encoded><![CDATA[<p>Writing not english characters in swf applications under linux is a <a href="http://bugs.adobe.com/jira/browse/FP-40" target="_blank">well known problem</a>. These days I had some spare time to inspect it and try to fix it. So far I&#8217;ve a solution. I don&#8217;t know if this one is the best one or if there is a better way but I&#8217;m not an expert in flash/flex development. The idea is to replace characters that came from flash player by their original characters using their code. eg. “193” with “а” (а is in Cyrillic) and so on. I know this will fix the problem for specified language (Bulgarian in this case), but will not fix it in general, so I decided to make something like a character map and load replacements dynamically. I use JSON for characters map. Here is an example file:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #009900;">&#123;</span><span style="color: #3366CC;">&quot;193&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;а&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;194&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;б&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;215&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;в&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;199&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;г&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;196&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;д&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;197&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;е&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;214&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;ж&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;218&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;з&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;201&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;и&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;202&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;й&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;203&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;к&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;204&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;л&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;205&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;м&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;206&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;н&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;207&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;о&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;208&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;п&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;210&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;р&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;211&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;с&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;212&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;т&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;213&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;у&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;198&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;ф&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;200&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;х&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;195&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;ц&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;222&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;ч&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;219&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;ш&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;221&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;щ&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;216&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;ь&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;223&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;ъ&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;192&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;ю&quot;</span><span style="color: #339933;">,</span>
<span style="color: #3366CC;">&quot;209&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;я&quot;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>and the code that reads this file and replaces characters:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript">package net.<span style="color: #006600;">iordanov</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Cyrillic <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0066CC;">import</span> com.<span style="color: #006600;">adobe</span>.<span style="color: #006600;">serialization</span>.<span style="color: #006600;">json</span>.<span style="color: #006600;">JSON</span>;
        <span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">rpc</span>.<span style="color: #006600;">http</span>.<span style="color: #006600;">HTTPService</span>;
        <span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">rpc</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">ResultEvent</span>;
        <span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">rpc</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">FaultEvent</span>;
        <span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">controls</span>.<span style="color: #006600;">Alert</span>;
&nbsp;
        <span style="color: #0066CC;">private</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">data</span>:<span style="color: #0066CC;">Object</span>; 
&nbsp;
        <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> loadCharMap<span style="color: #66cc66;">&#40;</span>file:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">var</span> service:HTTPService = <span style="color: #000000; font-weight: bold;">new</span> HTTPService<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            service.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;result&quot;</span>, processJson<span style="color: #66cc66;">&#41;</span>;
            service.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;fault&quot;</span>, failure<span style="color: #66cc66;">&#41;</span>;
            service.<span style="color: #0066CC;">url</span> = file;
            service.<span style="color: #0066CC;">send</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> processJson<span style="color: #66cc66;">&#40;</span>event:ResultEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #0066CC;">data</span> = JSON.<span style="color: #006600;">decode</span><span style="color: #66cc66;">&#40;</span>event.<span style="color: #006600;">result</span>.<span style="color: #0066CC;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> failure<span style="color: #66cc66;">&#40;</span>event:FaultEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
        <span style="color: #66cc66;">&#123;</span>
            Alert.<span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span>event.<span style="color: #0066CC;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
        <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> correctLinux<span style="color: #66cc66;">&#40;</span>str:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">String</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">var</span> char:<span style="color: #0066CC;">String</span>;
            <span style="color: #000000; font-weight: bold;">var</span> charCode:<span style="color: #0066CC;">Number</span>;
            <span style="color: #000000; font-weight: bold;">var</span> ret:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;&quot;</span>;
&nbsp;
            <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i:<span style="color: #0066CC;">int</span> = <span style="color: #cc66cc;">0</span>; i<span style="color: #66cc66;">&lt;</span>str.<span style="color: #0066CC;">length</span>; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
                char = str.<span style="color: #0066CC;">charAt</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>;
                charCode = str.<span style="color: #0066CC;">charCodeAt</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>;
                <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">data</span><span style="color: #66cc66;">&#91;</span>charCode<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
                    ret += <span style="color: #0066CC;">data</span><span style="color: #66cc66;">&#91;</span>charCode<span style="color: #66cc66;">&#93;</span>;
                <span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
                    ret +=char;
                <span style="color: #66cc66;">&#125;</span>
            <span style="color: #66cc66;">&#125;</span>
            <span style="color: #b1b100;">return</span> ret;
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>An example mxml file witch tests the code above:</p>

<div class="wp_syntax"><div class="code"><pre class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="font-weight: bold; color: black;">?&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mx:Application</span> <span style="color: #000066;">xmlns:mx</span>=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;*&quot;</span> <span style="color: #000066;">layout</span>=<span style="color: #ff0000;">&quot;absolute&quot;</span> <span style="color: #000066;">creationComplete</span>=<span style="color: #ff0000;">&quot;loadLang()&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
&nbsp;
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mx:Script<span style="font-weight: bold; color: black;">&gt;</span></span></span>
        <span style="color: #339933;">&lt;![CDATA[</span>
<span style="color: #339933;">        import net.iordanov.Cyrillic;</span>
<span style="color: #339933;">        import mx.rpc.events.ResultEvent;</span>
<span style="color: #339933;">        import mx.events.StyleEvent;</span>
&nbsp;
<span style="color: #339933;">        private function fixLinux(event:Event):void {</span>
<span style="color: #339933;">            text1.text = Cyrillic.correctLinux(text1.text);</span>
<span style="color: #339933;">        }</span>
&nbsp;
<span style="color: #339933;">        private function loadLang():void</span>
<span style="color: #339933;">        {</span>
<span style="color: #339933;">            Cyrillic.loadCharMap(&quot;http://dev.iordanov.net/flex/lang/bg.js&quot;);</span>
<span style="color: #339933;">        }</span>
<span style="color: #339933;">        ]]&gt;</span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/mx:Script<span style="font-weight: bold; color: black;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;mx:TextInput</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;text1&quot;</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;100&quot;</span> <span style="color: #000066;">change</span>=<span style="color: #ff0000;">&quot;fixLinux(event)&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/mx:Application<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre></div></div>

<p>and simple html to load this swf application.</p>

<div class="wp_syntax"><div class="code"><pre>&lt;object width=&quot;550&quot; height=&quot;400&quot;&gt;
  &lt;param name=&quot;movie&quot; value=&quot;somefilename.swf&quot; /&gt;
  &lt;param name=&quot;wmode&quot; value=&quot;transparent&quot; /&gt; 
  &lt;embed src=&quot;cyrillic.swf&quot; width=&quot;550&quot; height=&quot;400&quot; wmode=&quot;transparent&quot;&gt;&lt;/embed&gt;
&lt;/object&gt;</pre></div></div>

<p>Note that wmode must be set to  transparent. In other case (I don&#8217;t know why, as I say I&#8217;m not an expert in flash/flex development) user must hold Ctrl key pressed while typing.</p>
<p class="addtoany_share_save">
    <a name="a2a_dd" onmouseover="a2a_show_dropdown(this)" onmouseout="a2a_onMouseOut_delay()" href="http://www.addtoany.com/bookmark?sitename=dev.iordanov.net&amp;siteurl=http%3A%2F%2Fdev.iordanov.net%2F&amp;linkname=Flash%20player%20linux%20and%20unicode.&amp;linkurl=http%3A%2F%2Fdev.iordanov.net%2Farchives%2F15"><img src="http://dev.iordanov.net/wp-content/plugins/add-to-any/share_save_120_16.gif" width="120" height="16" border="0" alt="Share/Save/Bookmark"/></a>
    <script type="text/javascript">
		a2a_linkname="Flash player linux and unicode.";
		a2a_linkurl="http://dev.iordanov.net/archives/15";
				    </script>
    <script type="text/javascript" src="http://www.addtoany.com/menu/page.js"></script>

	</p>]]></content:encoded>
			<wfw:commentRss>http://dev.iordanov.net/archives/15/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
