2009-07-01 16 views
0

"Do certain characters take more bytes than others?"を求めた後、私は今、私はどのように見つけるためにしようとしてきたのActionScript/Flexの3のソケット接続でactionscript 3ソケット接続で文字エンコーディングを設定するにはどうすればよいですか?

データを受信し、送信するときに文字コードセットを設定する必要があるだろうと考え出しましたこれを行うが、利用可能なそのようなプロパティはないようです。これを行う特別な方法はありますか?

答えて

2

flash.net.Socketクラスは、バイナリ入力/出力クラスです。ソケット内のデータへの低レベルのアクセス権があるため、ソケット自体のエンコーディングは指定しません。

あなたが探しているのは、異なる文字セットから文字列を読み取る方法です(Socket::readMultiByte)。

public function readMultiByte(length:uint, charSet:String):String 

同様に、特定の文字セットの文字列を書き込む場合は、Socket::writeMultiByteを使用します。

public function writeMultiByte(value:String, charSet:String):void 
+0

私はXMLSocketクラス(http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/net/XMLSocket.html)を使用していた、私はクラスがこの機能を持っているとは思いません。私はSocketクラスに変更する必要があると思いますか? – Tom

+0

はい、代わりに低レベルのflash.net.Socketクラスを使用します。 charSetを制御でき、XML文字列を前後に送信することができます。書き込み/読み込みのString値は、必要なものにすることができます。flash.net.Socketはもっと柔軟です。 – darronschall

0

私の知る限り、FlashはUnicodeのみをサポートしていますが、OSのコードページをSystem.useCodePageで使用するオプションがあります。しかし、それはユーザーのOSと言語に依存し、あなたが何をしているのか正確に分からなければお勧めしません。

文字あたりのバイト数を減らすために、英数字はUTF-8で1バイトのみを使用することを理解しています。

乾杯...

関連する問題