改行コードってなんぞ?

| | コメント(0) | トラックバック(0)

改行に関する事で、FLASHではしばしばなんじゃこりゃ現象が起きます。
オンライン上で見るとなんともないのに、SWFデータに読み込んだテキストなんかをローカルでチェックすると、改行が1つ多い(1行置きに文章が表示される)状態になったり、逆に、改行が無くなってしまったり、といった不具合がでてきてしまった経験、ございませんでしょうか。

これらの原因の全ては『改行コード』と呼ばれるなんだかよく解らないものでして、僕自身もよく解らないのでこういうものなんだ、ぐらいの解釈ですが、要するに
『OSとかの違いによって使われている改行の種類が違う』というものらしいです。
『CR』とか『LF』とか『CR/LF』とか、聞いた事ありませんでしょうか?
具体的には以下の通り。

CR:Carriage Returnの略。 URLエンコード文字だと『%0D』、FLASHだと『\r』とかで書かれる。
LF:Line Feedの略。URLエンコード文字だと『%0A』、FLASHだと『\n』とかで書かれる
CR/LF:CRとLFが両方くっついたもの。『%0D%0A』『\r\n』という事です。

この改行コードがいくつもあるせいで『改行』と一括りに出来なくなっているために、上記のようなエラーがあれこれと出てきてしまう事があります。
あっと、ちなみにこの『 \ 』←これ、これはバックスラッシュで、Winなら「¥」、Macなら「Alt + ¥」で出てきます。

うーん、じゃあどうしよかい(゜□゜)と悩んだ結果
FLASH内部でどれかに統一してあげちゃえばいいじゃないか、となりました。
取りあえず例として『文字列の中の改行を全てLF(\n)にしてしまう』というのをやりましょう。
スクリプトはこんな感じです。

preTextData = "ここに改行を含めた文字列が入っているとします";
textData = String(preTextData.split("\r\n").join("\n").split("\r").join("\n"));

これで、textDataの中身はpreTextDataの文字列の改行コードを全て\nに変更させたものになりました。
2行目で使ったスクリプトは、簡単に説明しますとこんな感じです。
split(文字列):指定した文字列でデータを分解し、配列に格納する。
join(文字列):配列と配列の間だを、指定した文字列でつなぎ合わせて一つのストリングを作る。

よって、何をやっているかと言いますと
『改行コードCR/LF で分解し(この時点でストリングからCR/LFが消える)配列を作り、
 その配列を改行コードLF で繋いで一つのストリングにする。
 そのストリングを改行コードCR で分解し(この時点でストリングからCRが消える)配列を作り、
 その配列を改行コードLF で繋いで一つのストリングにする』
と、なります。これでCR/LFもCRも、全てLFに置き換えられた、というわけです。

膨大な量の文章を変換する場合は、それなりに負荷がかかるかもしれませんので、使い所は各々で見極めが必要になると思いますが、一種のおまじないとして用いる事で、特に外部テキストの読込に関する表示エラーの50%は無き物にできるのではないでしょうか(゜□゜; )・・・多分(またか

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: 改行コードってなんぞ?

このブログ記事に対するトラックバックURL: http://graphicker.jp/flextime/blog/cgi-bin/mt-tb.cgi/88

コメントする

このブログ記事について

このページは、ヨウスケが2008年4月 2日 20:18に書いたブログ記事です。

ひとつ前のブログ記事は「evalってなんぞ?」です。

次のブログ記事は「varってなんぞ?」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.1