Satimage OSAXでテキストを指定エンコーディングでファイルに書き込み
テキストを指定エンコーディングでファイルに書き込むAppleScriptです。
どうしても、UTF-16BE(Big Endian)でファイル書き込みをしなくてはならず、(作っているのが)どうせwrite binary命令のためにSatimage OSAXの使用を解禁しているAppleScriptだったため、テキストの書き込み命令もSatimage OSAXに入っているものを使えばいいや、どうせ入っているだろうし……と、考えました。
……やはり、当然のようにwritetext命令があり、「UTF-16」でファイルに書けることはAppleScript用語辞書に記載されているのですが、UTF-16BEについては明記されていません。
ただ、AppleScript用語辞書内の書き方が「デフォルトはUTF-8だけどだいたいIANAで決められている文字セット名なら通るよ〜ん」という感じだったので、「UTF-16BE」をおもむろに指定してみたところ、問題なくUTF-16BEで書き込めました。
ああ、本当にSatimage SoftwareをAppleが買収したらいいのに!!
ただ、あまりに便利なSatimage OSAXに慣れてしまうと、自分で作ったAppleScriptを広く配布しようとしたときに問題が発生するので、同様の処理をAppleScriptObjCで記述できるようにしておくことが重要になってくるのでしょう。
スクリプト名:Satimage OSAXでテキストを指定エンコーディングでファイルに書き込み |
–Caution !! This AppleScript require “Satimage OSAX” from Satimage Software –http://www.satimage.fr/software/en/downloads/downloads_companion_osaxen.html set a to choose file name set aText to “ABCDEFG” set bText to “あいうえお” writetext aText to a encoding “UTF-16BE” with append writetext bText to a encoding “UTF-16BE” with append |
7月 26th, 2012 at 3:26:30
こっちも実は標準のwirteで出来ますね
write ~ は環境依存(日本語環境ではShift_JISだかMacJapanese?、英語だとASCII)
write ~ as string は同上
write ~ as Unicode text はUTF-16BE
write ~ as «class ut16» はUTF-16LE(BOM付き)
write ~ as «class utf8» はUTF-8
10.5辺りからstringとUnicode textは等価になったと聞いてますが、
read/writeでは違いが出るみたいですね
12月 5th, 2012 at 20:52:45
コメントありがとうございます。うっかり見逃していて、今日(12/5)気づきました。
このあたり、日ごろは見落としてしまうところなのでご指摘ありがたいです。
ひととおり実験用プログラムを組んで実行して、結果をダンプして確認を行ってみたところ、
「10.6と10.8では、as Unicode textの結果とas <>の結果が反対」
だということが分かりました。dreirossさんはこれを10.5か10.6で確認されたのだと思いますが、10.8では結果が違いました。
10.7とか10.5のテストをやったら、記事にまとめてみるつもりです。
12月 5th, 2012 at 20:58:12
>as <>の結果が
「as «class ut16»の結果が」と書いて送信しました(めんどくさがって、半角不等号を複数入力したら、タグとみなされて文字を除去されたもよう)。
12月 5th, 2012 at 21:21:33
10.7は10.6と同じ結果が出ました。10.8だけ「as Unicode text」と「as «class ut16» 」の結果が違う(10.5も未検証ですが)ということに。