«data utxt16進数»
16進数 | データの中身を示す16進数 |
class | クラス識別子[r/o] |
値の属するクラス(当然Unicode textと思いきやtextが返る) | |
length | 整数[r/o] |
含まれる文字数(numberと同じ) | |
number | 整数[r/o] |
含まれる文字数(lengthと同じ) | |
quoted form | 文字列[r/o] |
文字列の前後をクォート「'」でくくったもの (Mac OS X 10.2以降) | |
id | 整数 | 整数リスト[r/o] |
文字コード(Mac OS X 10.5以降) |
ユニコードによる文字列を扱うために、用意されたクラス。
AppleScript2.0、OSのバージョンとしては10.5以降は、文字列は基本的にユニコードで扱われるようになり、stringクラスと同じ扱いとなった。
そのため、あえてこのクラスを使う必要はなくなった。
一応、文字列(string)との相互変換はできるようになっているが、従来の文字列と入れ替えて使うことは、完全にはできない。
例えばUnicode textはcount命令を受け付けないし、演算子もデータクラスに使えるもの以外は使えないし、要素も文字列が使用できるものがユニコードではつかえない。
Mac OS Xになってからは多少状況が変わり、count命令も受け付けるし、演算子もstringクラスに利用できるものは大抵大丈夫になっている。
とは言え、まだまだ中途半端というか謎っぽい仕様が多い。
Mac OS Xになってからは、International text(国際文字列)の置き換えとして利用される事が多いが、もう一つ使い分けがハッキリしていない。
このため、Mac OS Xで文字列データの受け渡しが失敗した時は、とりあえずas Unicode textやas stringを使ったキャスティング(データクラスの変換)を試して、それで回避するという付け焼き刃的な対処が必要。
なお、write命令でファイルに書き込んだ場合、エンコードはUTF-16で書き込まれる。
2バイト文字をユニコードへ変換できていない。
MacOS9.1以降は、変換は上手くいく。結果ウィンドウにも文字列の形で表示される。
MacOS9.1では、例1はUnicode textではなくcurrent applicationが返ってくるし、例2はエラーとなる。また、文字列と&演算子で結合しようとすると、「メモリが足りません」というエラーとなる。
MacOS9.1から正式にサポートしたことになっているものの、まったく使い物にならない。
結局、旧Mac OSではunicodeは使い物にならないまま放り出されてしまったようだ。
class of ("text data" as Unicode text)
set x to ("漢字な感じ" as Unicode text)
display dialog x