スクリプト中の文字列に関する注意

1996.2.20


 英語表現形式のスクリプト中で文字列を表す場合、「"」で文字列を囲めばそのまま文字列として認識されます。例えば「"果物"」とすれば、これは「果物」という文字列を表しているわけですね。ところが、この方法だけではうまくいかない場合もよくあります。

 例えば、「表示」という文字列をスクリプト中で表したい場合、そのままではうまくいきません。

 上の例では、「表」という文字の後の部分でエラーが表示されていますが、エラーの内容を読んでも今一つ意味が分かりませんね。

 実はこのエラー、スクリプト編集プログラムが2バイト文字をうまく扱えないために生じるものなのです。

 AppleScriptでは、文字列中に「"」を書く場合「\(バックスラッシュ)」を使用します。例えば「これは"サンプル"です。」という文字列をスクリプト中に記述したければ、「"これは\"サンプル\"です。"」と書くことになります。また「\」自身を表すためには「\\」と書く必要があります。

 この「\」という1バイト文字のアスキー番号は「92」です。また「表」という2バイト文字のアスキー番号は「149:92」です。… もう分かりますよね? 「表」という文字の2バイト目が「\」と同じであることから、スクリプト編集プログラムは「表」の次に「"」または「\」が来ることを期待するわけです。しかし実際にはそのような文字を表しているわけではないため、この部分でエラーが生じてしまうのです。

 2バイト目のアスキー番号が「92」の2バイト文字は全部で39種類あります。

― ソ Ы \ 噂 浬 欺 圭 構 蚕

十 申 曾 箪 貼 能 表 暴 予 禄

兔 喀 媾 彌 拿 杤 歃 濬 畚 秉

綵 臀 藹 觸 軆 鐔 饅 鷭 \

 頻繁に使用する文字も含まれている点に注意して下さい。

 この問題の解決法方ですが、上記の39文字については2バイト目の「\」を「\\」にする、つまり「表」は「表\」と書くことで正しく表記されます。しかし39種類全てを覚える必要はありません。文字列の途中でエラーが出るのはこの問題が生じた場合だけなので、適当に文字を書き込んでコンパイルし、エラーが出たらその末尾の部分に「\」を書き足すだけで十分でしょう。よく書く文字だけ記憶しておき、あらかじめ「\」を書き込んでおけば、実用上ほとんど問題にならないはずです。


 以上、スクリプトに直接文字列を書き込むときの問題点でした。


Tipsに戻る
AppleScriptのページに戻る
このホームページに関するお問い合わせは、karino@drycarbon.comまで。