\r\nが改行コードとして認識されない[Flash 8/Mac OS X] [Edit]

Flash 8/Mac OS Xで、つぎのスクリプトを実行してみます(図001)。

図001■[アクション]パネルに記述したスクリプト
FN051217_001.gif

1. "\n"が改行コードと認識されない
期待するのは、以下のような[出力]です。

// [出力]:
line0
line1
=====
line0

ところが、実際の[出力]は、こうなります(図002)。

図002■[出力]パネルの表示
FN051217_002.gif

"\n"が改行コードと認識されておらず、そのまま文字として出力されています。newline定数を使えば改行はされるものの、String.split()メソッドで"\r"を区切り文字に指定して、ふたつのエレメントからなる配列に変換することができません。

2. エスケープ文字は全角バックスラッシュ?
[デバッグ]メニューから[変数のリストアップ]を確認すると、[出力]パネルにはつぎのように表示されます(図003)。

図003■全角バックスラッシュ(\)がエスケープ文字?
FN051217_003.gif

改行コードと認識されているのは、全角バックスラッシュを使った"\r"のようです。ということは、全角バックスラッシュ(\)を、エスケープ文字にすればよいのでしょうか。もしこれで動作したら、えらいことになる予感です。

図004■全角バックスラッシュ(\)ではエスケープされない
FN051217_004.gif

試すと、全角バックスラッシュ(\)は、エスケーブ文字にはならないようです。ほっとしました(図004)。

3. 半角バックスラッシュでエスケープ可能だが
懐かしのバグを思い出し、半角バックスラッシュ(\)でエスケープしたところ、ようやく期待した[出力]になりました(図005)。

図005■改行コードが正しく認識された[出力]
FN051217_005.gif

しかし、これで一件落着と思ってはいけません。つぎの変数を設定した2行のステートメントの違いが、おわかりになりますか?(図006)

図006■全角と半角のバックスラッシュ
FN051217_006.gif

全角バックスラッシュも半角バックスラッシュも、どう見ても同じです。しかし、確かに違った文字を入力しており、実際に処理結果も異なります。

これを正しく識別できるようにするには、[アクション]パネルでこれまた懐かしのMonacoフォントを使った方がよさそうです(図007)。

図007■Monacoに設定した[アクション]パネルの表示
FN051217_007.gif

[追記] 2006.12.17
円記号でなく、バックスラッシュをエスケープ文字とするのは、Flash 8/Mac OS Xからの仕様変更のようです。なお、「Flash 8/Mac OS Xで円記号がエスケープ文字として認識されない」をご参照ください。

[追記] 2007.02.24
Monacoフォントを使うと、Flash 8で挿入ポイント(カーソル)の表示位置にずれの生じる場合があるようです。

コメント区切り記号//を使った場合に、挿入ポイントの表示位置がずれる現象を確認しました。以下の図008で、挿入ポイントは行末("p"の後ろ)に置いています。フォントサイズを11ポイントにすると、表示のずれがより大きくなりました(Flash Professional 8/Mac OS X.4.8)。

図008■Monacoで挿入ポイントの表示位置がずれる
FN051217_008.gif

コメント

この記事へのコメント

  1. 1.ken_taka(2006年01月14日 23:31)

    野中さん、お久しぶりです。
    で、UTF-8で保存する。あるいはバックスラッシュを「Option+Y」で入力する。
    ではどうでしょうか。

  2. 2.野中 文雄(2006年01月29日 17:55)

    > UTF-8で保存する
    外部asファィルとして保存し、#includeするということですか? その場合、Shift JIS保存で、"¥n"が正しく改行コードとして認識されました。UTF-8では、バックスラッシュにしなければなりませんでした。

    > バックスラッシュを「Option+Y」で入力する
    円記号¥が表示され、通常の文字列として処理されました。エスケープ文字として認識はされないようです。

  3. 3.野中 文雄(2006年12月17日 15:18)

    Macで半角バックスラッシュが全角に化ける問題を、ブラウザについて扱っているブログがありました。原因について関連があるかもしれませんので、参考に掲げておきます。

    WEBプログラミングNOW!
    「Safariと半角円マーク(Shift_JIS編)」
    http://shimax.cocolog-nifty.com/search/2006/09/safarishift_jis_6a0f.html

その他の記事