トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   とにかくFLASH【FLASHに関して全般】
     escapeMultiByte
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
skunk
Åê¹ÆNo.39426
投稿日時: 2008-7-4 14:56
新米
居住地:
投稿: 7
使用環境:
Win2000,Flash MX
escapeMultiByte
AS3 windows xpで

System.useCodePage=trueの場合、
escapeMultiByteとunescapeMultiByte
の結果が正しくありませんが、
これって期待される動作でしょうか??


import flash.utils.unescapeMultiByte;
import flash.utils.escapeMultiByte;

System.useCodePage=true;

var value="。";


var escapeValue=escapeMultiByte(value);

trace(escapeValue);
//%81B



var unescapeValue=unescapeMultiByte(escapeValue);

trace(unescapeValue)
//B


Bと出力されてしまします。。


どなたか教えてくださいませ。

よろしくお願いいたします。

ニノミヤ カズノリ
Åê¹ÆNo.39437
投稿日時: 2008-7-5 16:36
職人
居住地: 東京
投稿: 430
使用環境:
CS4
.4.11, .5.7
XP Pro(sp3)
Flash Player 10,0,22,87,
AIR 1.5.1,
IE 5.5 & 6 & 7 & 8,
Firefox 2.0.0.20 & 3.0.11 & 3.5,
Opera 9.64,
Safari 4,
Google Chrome 2.0.172.31,
Netscape 7.1
Re: escapeMultiByte
期待される結果ではないでしょう。

unescapeMultiByte で返されている値は、%81B の B です。
これは Flash 側が正しく unescape できなかった為です。

例えば、下記のコードでも同じ症状が出ます。
System.useCodePage = true;

var value:String = "テスト";

var escapeValue:String = escapeMultiByte(value);
trace(escapeValue);

var unescapeValue:String = unescapeMultiByte(escapeValue);
trace(unescapeValue);

結果
%83e%83X%83g
eXg

綺麗に %83 が省かれていますね。
これが平仮名だとすると、この様な事態は起こりません。
System.useCodePage = true;

var value:String = "てすと";

var escapeValue:String = escapeMultiByte(value);
trace(escapeValue);

var unescapeValue:String = unescapeMultiByte(escapeValue);
trace(unescapeValue);

結果
%82%C4%82%B7%82%C6
てすと


これらの結果から、%81B の末尾についている B(ASCII コード)は解釈されていない事が分かります。
もし、「%81B」から「。」に戻したいのであれば、末尾についている ASCII コードを 16 進数に直さなくてはなりません。
ASCII コードの B は 16 進数だと「0x42」です。
つまり、「%81B」を書き直すと「%81%42」となります。

System.useCodePage = true;
trace(unescapeMultiByte("%81%42"));

結果


参考になるリンクを載せておきます。
URLエンコード - Wikipedia
ASCII文字コード : IT用語辞典
ShiftJISコード
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops