TextMateで作成したasファイルにはBOMがない

UFT_8_BOM_t.png

Flashで日本語のテロップを流すムービークリップを作ってたんだけど、どうにも文字化けしてしまい今日一日悩んだり調べたり…。結局、TextMateで保存したASファイルの文字エンコーディングがUFT-8Nなのが問題だったらしい。TextMateではデフォルトのテキストエンコーディングはUTF-8。実際にはBOM(Byte Order Mark)なしのUTF-8Nで保存されるみたい。FlashではどうもBOM付きじゃないと問題があるような、というかまだ良く分かってない気もするんだけど…。Flashのヘルプによると、

Flash Player でサポートされる Unicode エンコーディング形式

Flash のテキストデータを読み込む際に、Flash Player はファイルの最初の 2 バイトを調べてバイト順マーク (BOM) を検出します。BOM は Unicode エンコーディング形式を識別するために使用される標準的な形式規則です。アプリケーションでは UTF-8 エンコーディングを使用することをお勧めします。

Flash Player で次のいずれかの BOM が検出されると、テキストエンコーディング形式は次のように解釈されます。

  • ファイルの最初のバイトが OxFE、2 番目のバイトが OxFF の場合、エンコーディングは UTF-16 BE (ビッグエンディアン) と見なされます。これは Macintosh オペレーティングシステムで使用されます。
  • ファイルの最初のバイトが OxFF、2 番目のバイトが OxFE の場合、エンコーディングは UTF-16 LE (リトルエンディアン) と見なされます。これは Windows オペレーティングシステムで使用されます。

UTF-16BE または LE 形式でファイルを保存できるテキストエディタであれば、ほとんどの場合自動的にファイルに BOM が追加されます。

BOM が検出されなければ…から察するにUTF-8Nでもいいんじゃないかという風にも考えたが、実際に文字化けする以上これはだめらしい。Flashのスクリプトウィンドウでは自動でBOMを付ける仕様になってるので、同じASファイルをFlash 8で開いて保存し直すと、文字化けはしなくなる。このファイルを再度TextMateで開いて、編集/保存しても文字化けはおこらない。とりあえずは面倒だけど新規ファイル制作時かパブリッシュ前に一度FlashでASファイルを開いて保存し直すしかなさそうだ。
ちなみにUTF-16で保存すると読み込み時にシンタックスエラーが出る…。

UTF-8のBOMは、付いてるとMacIEなんかではJavascriptやCSSの読み込みに失敗したり、またあPHPやPerlでも何かと悪さをするので、多くのエディタではBOMなしのUTF-8Nで保存される事が多いみたい。併用していたSmultronでも同様の文字化けは発生。

BOMの有無を簡単に選択して保存できる機能があるといいのだけど、TextMateのフォーラムでもその事に触れた発言があったので、バージョンアップに期待。

このエントリーをはてなブックマークに追加
はてなブックマーク - TextMateで作成したasファイルにはBOMがない
Facebook にシェア
[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]

スポンサーリンク