スマートフォンやhtml5+CSS3など新技術に四苦八苦。jQuery、AjaxなどJavaScriptも難しいですね。そんなWebに悩む人のネタ帳です。

XML形式のデータから改行コード「n」が含まれた文字列を、ActionScript3で読み込み出してTextFieldに出力すると、改行コードは改行されずに、そのまま「n」と表示されてしまいます。

例えば以下のような内容のXMLデータを読み込みます。

<?xml version="1.0" encoding="utf-8"?>
<item>
  <message>あいうえおnかきくけこnさしすせそ</message>
</item>

これを、通常のAS3の処理で読み込んで任意のTextFieldにセットします。

(中略)
var xml:XML = new XML(loader.data);			
message.text = xml.message;

すると出力結果は
「あいうえおnかきくけこnさしすせそ」
となってしまいます。

改行コードの部分は改行させたい。

なんの事はない、データを読み込む際に自動でエスケープ処理されていただけなんですね。
つまり、「n」は「\n」に置換されちゃっているので、これを元に戻してあげればよいのです。

(前略)
var xml:XML = new XML(loader.data);			
message.text = xml.message.replace("\n", "n");;

出力結果は以下のように意図した形になりました。
「あいうえお
かきくけこ
さしすせそ」

この答えにたどり着くまでに、キャリッジリターン「CR」とラインフィード「LF」の違いだとか、そもそも改行コードが違うのだとか、さまざまな情報に惑わされて多くの時間を費やしてしまいました。
実際には、PC環境やFlashやASのバージョンなどケースにより対策もさまざまだと思われますが、私の場合、上記の方法で簡単に解決しました。

このエントリーをはてなブックマークに追加

Comment

Comment Form

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Monthly Archives

Search