忍者ブログ

ぼんぷろぐ

InDesign、イラレ、フォトショ(CS6 Win)の勉強中。。。(旧まとめいみブログ)

[未選択]
ExtendScript(CS6)で681字のUTF-8和文テキストファイルの読み込みに失敗する

いつも使ってるスクリプトがなんかあるテキストファイルだけうまく動かないなーってことがありまして、原因を調べてみたら記事タイトルのような真相だったのですが、CS6だけなのかなあ…



ExtendScriptでテキストファイルを読み込むスクリプトはたとえばこんな風に書きます。

var f=File("~/Desktop/あ.txt");
f.open("r");
var s=f.read();
f.close();
s;

これでテキストファイルのエンコードは自動判別してくれて、大抵の場合うまく読み込んでくれのでるのですが、
UTF-8(BOM無し)で681字程度の和文を読み込もうとすると失敗してしまうのです。
失敗ってのは具体的に言うと、Windowsではsが空文字列("")に、Macではおもいっきり文字化けします。

すべて2バイト文字で改行なしの文章で、1万字まで実験してみたところ、ダメだったのは681文字と682文字のときだけでした。ただし改行や半角文字が含まれると文字数は変わってきます。
f.encoding="UTF-8";
をopenする前に書いておけば正しく読めるようになります。



そもそも自動判別が上手くいかないことがあるというのは織り込んでおくべきことであって、BOM付きにするなり、encodingを指定するなりすればいいわけで、別にExtendScriptが(Adobeが)悪いと言いたいわけではありません。

CCがどうなってるのか気になるので試した方はぜひ教えてください。
↓681文字のテキスト

とかくに人の世は住みにくい。意地を通せば窮屈だ。情に棹させば流される。情に棹させば流される。智に働けば角が立つ。住みにくさが高じると、安い所へ引き越したくなる。山路を登りながら、こう考えた。山路を登りながら、こう考えた。意地を通せば窮屈だ。とかくに人の世は住みにくい。情に棹させば流される。意地を通せば窮屈だ。山路を登りながら、こう考えた。とかくに人の世は住みにくい。どこへ越しても住みにくいと悟った時、詩が生れて、画が出来る。意地を通せば窮屈だ。とかくに人の世は住みにくい。意地を通せば窮屈だ。山路を登りながら、こう考えた。智に働けば角が立つ。山路を登りながら、こう考えた。住みにくさが高じると、安い所へ引き越したくなる。山路を登りながら、こう考えた。どこへ越しても住みにくいと悟った時、詩が生れて、画が出来る。とかくに人の世は住みにくい。住みにくさが高じると、安い所へ引き越したくなる。情に棹させば流される。住みにくさが高じると、安い所へ引き越したくなる。とかくに人の世は住みにくい。情に棹させば流される。情に棹させば流される。どこへ越しても住みにくいと悟った時、詩が生れて、画が出来る。意地を通せば窮屈だ。住みにくさが高じると、安い所へ引き越したくなる。智に働けば角が立つ。山路を登りながら、こう考えた。情に棹させば流される。とかくに人の世は住みにくい。情に棹させば流される。智に働けば角が立つ。智に働けば角が立つ。意地を通せば窮屈だ。智に働けば角が立つ。とかくに人の世は住みにくい。どこへ越しても住みにくいと悟った時、詩が生れて、画が出来る。とかくに人の
PR

[未選択]
JavaScriptのクロージャについて勉強したので自分なりにまとめた

グローバル変数がglobalオブジェクトのメンバであるように、ローカル変数もそのスコープに対応した『オブジェクトのようなもの』のメンバである


ローカルスコープ内で関数を定義すると、その関数は、そのスコープの『オブジェクトのようなもの』への参照を持ち、名前解決に使う


ローカルスコープが終了しても『オブジェクトのようなもの』は、それを参照している関数が存在する限り消滅しない これがJavaScriptのクロージャの原理


『オブジェクトのようなもの』はthisで自身を参照できないという点でオブジェクトとは異なる


ただしFunctionコンストラクタで生成した関数だけは『オブジェクトのようなもの』への参照を持たない(*1)


*1 この仕様はExtendScriptでは守られてないっぽい

プロフィール

あるふぁ(仮)
InDesignで新聞組版のようなことをしてる人です。

InDesignスクリプトについて

つくったInDesignスクリプトのまとめ

twitter

5つの「く」

ハタハタのすばらしさをまとめました。