テキストメソッド(text)で表示されたテキストが1行おきに表示されてしまう。
textメソッドで、表示させたテキストが、サーバ上(UNIX)では正常に表示されるのに、
ローカル上(Windows)では1行おきに表示されてしまう。
例
AAAAAA
BBBBBB
CCCCCC
上記の内容が
AAAAAA
BBBBBB
CCCCCC
と表示されてしまう。
原因は、テキストファイルの改行コード。
以下は推測。
今回は、メモ帳で文章を作成し、そのまま使用したが、
この場合、改行コードは、CR+LFとなる。
今回、作成した文章は、Shift-JISからUTF-8に変換し表示している。
UTF-8の改行コードは、LFとなっていて、CRが文字として見なされたため、
ローカルでは改行されてしまったと思われる。
今回は、以下のようなコーディングを行い、回避した。
これで、サーバ上、ローカル上での違いがなくなった。
-------------------------以下はソース---------------------------
// 外部テキストファイルはLoaderで読み込む
var loader:URLLoader=new URLLoader();
//バイナリー形式として受け取る。
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.load(new URLRequest("../text/keyimage/dat.txt"));
function completeHandler(evt:Event):void {
// 読み込んだデータは、loader.dataの変数として取り込まれる
// shift-jisからUTF8に変換する。
var byteData:ByteArray = new ByteArray();
byteData = ByteArray(loader.data);
var src:String = byteData.readMultiByte(byteData.length, "shift-jis");
//正規表現を使用し、改行コード(CR+LF Windows,UNIX:LF,Mac:CR)をすべてLFに着替える。
//これを行わないと、ローカル(Windows)上で、1行おきに表示されてしまう。
var myPattern:RegExp = /\r\n|\r|\n/g;
var result_str:String = src.replace(myPattern, "\r");
text_mc.textfield.text = result_str;
}
ローカル上(Windows)では1行おきに表示されてしまう。
例
AAAAAA
BBBBBB
CCCCCC
上記の内容が
AAAAAA
BBBBBB
CCCCCC
と表示されてしまう。
原因は、テキストファイルの改行コード。
以下は推測。
今回は、メモ帳で文章を作成し、そのまま使用したが、
この場合、改行コードは、CR+LFとなる。
今回、作成した文章は、Shift-JISからUTF-8に変換し表示している。
UTF-8の改行コードは、LFとなっていて、CRが文字として見なされたため、
ローカルでは改行されてしまったと思われる。
今回は、以下のようなコーディングを行い、回避した。
これで、サーバ上、ローカル上での違いがなくなった。
-------------------------以下はソース---------------------------
// 外部テキストファイルはLoaderで読み込む
var loader:URLLoader=new URLLoader();
//バイナリー形式として受け取る。
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.load(new URLRequest("../text/keyimage/dat.txt"));
function completeHandler(evt:Event):void {
// 読み込んだデータは、loader.dataの変数として取り込まれる
// shift-jisからUTF8に変換する。
var byteData:ByteArray = new ByteArray();
byteData = ByteArray(loader.data);
var src:String = byteData.readMultiByte(byteData.length, "shift-jis");
//正規表現を使用し、改行コード(CR+LF Windows,UNIX:LF,Mac:CR)をすべてLFに着替える。
//これを行わないと、ローカル(Windows)上で、1行おきに表示されてしまう。
var myPattern:RegExp = /\r\n|\r|\n/g;
var result_str:String = src.replace(myPattern, "\r");
text_mc.textfield.text = result_str;
}
スポンサーサイト