- ベストアンサー
Macintosh環境でテキスト文字 \ を認識する方法を教えて欲しいです
Macintosh環境において、S-JISフォーマットの、テキストファイル text.txt を読み込み、テキストで記述された改行コード変換するactionスクリプトを考えたいと思っております。 そこで、以下のようなスクリプトをつけたムービークリップを作りました。 onClipEvent (load) { // テキストファイルの読み込み System.useCodepage = true; this.loadVariables("test.txt"); } on (release) { // 改行文字を認識してメッセージに改行を追加 str = new String(text); str = str.split(String.fromCharCode(92,110)).join("\n"); str = str.split(String.fromCharCode(92,114)).join("\n"); str = str.split("\\n").join("\n"); str = str.split("\\r").join("\n"); _root.DOCS= str; } 用意したtext.txtの内容は以下の通りです: &text=この先にnの改行があります\nこの先にrの改行があります\r¥¥n→\\n ¥¥r→\\r& これを実行してみたところ、 ・Windows環境(FLASH7 & FLASH8)では_root.DOCSは以下のように表示されました: この先にnの改行があります この先にrの改行があります ¥¥n→\ ¥¥r→\ ・Macintosh環境(FLASH7 & FLASH8)では_root.DOCSは以下のように表示されました: この先にnの改行があります\nこの先にrの改行があります\r¥¥n→\\n ¥¥r→\\r どうもMacintosh環境では、テキストの \ の認識が、split命令内では String.fromCharCode(92) や "\\" では認識しないのではないかと考えております。 この動作をMacintoshで実現する為には、どのように表記すればよろしいでしょうか。 良い案をおもちの方がおられましたら、是非御教授御願いできませんでしょうか。 よろしく御願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
手元にMacがないのでアドバイスになってしまいますが、 一度外部テキストの内容を &text=\ のみにして、読み込み後strに入れ trace(str.charCodeAt(0));//or _root.DOCS = str.charCodeAt(0); のようにどのような数値が返されるか一度確認されてはいかがでしょうか Windowsと違う結果が出た場合は、if文やswitchで $version を元にOS毎に分け、 それぞれのキャラクタコードで擬似置換(split(strA).join(strB))を行えば可能かなと思いました
お礼
なるほど! 半角文字って、基本的にキャラクタコードの数値は共通だろうと思い込んでいました…。 まず数値が違うのか確認しなきゃですね。 早速試してみた所… 「Windowsでは92」「Macintoshは165」と、数値が違いました。 試しにMacintosh環境では、165のキャラクターコードで動作するようにしてみた所。問題なく動作致しました! 更に確認してみたところsplit(str)のような命令内では、Windowsは92と165のどちらのキャラクタコードでも認識し、 Macintoshでは、165のキャラクタコードでのみ認識するという動作をするようです。 今後の動作としては、 OSがMacintosh又は不明の場合は、165のキャラクタコードで動作するというものにしていこうと思います。 無事問題解決でき、すごい助かりました! ありがとうございます!