ExtendScript、Creative Suite特有の情報
主として、Estherの処理中では、ダイアログボックスをユーザに示し、入力されたデータをドキュメントの内容に反映させる一方で、各値をJSON形式テキストに変換して、プレインテキストファイルへと出力します。
──詰まり、利用者が手ずから設定した値を保存しているのです。
これによって、次回に同じスクリプトを駆動した際、ダイアログボックス内に前回の設定値を反映させる、という行為を可能としています。
しかし、GUIのインタフェイス(テキスト入力欄など)から取得した値が文字列型で、且つ日本語の文字を含む場合、app.textExportPreferences.characterSetの値は顧みられることなく、ファイルへの出力時、文字コードは一律Shift_JISとなるようです。*1
万一、それらの中にShift_JISでは扱えない文字が存在した場合*2、ドキュメントへの適用は何ら問題なく行われるものの、JSON書き出し処理結果を見てみると、何も書かれていない白紙状態のファイルが生成されています。
この致命的な事態を未然に防ぐ為、本ソフトウェアは、文字列値を出力するにあたり、組み込み関数のencodeURIComponentでURIエンコードします。
これなら、一旦全ての文字をASCIIの収録範囲に変換して保存するので問題はありません。 そして、読み出し時にはdecodeURIComponent関数がそれを復元する訳です。