文字コード関連¶
内部文字コード¶
YAYA は内部文字コードとして UCS-2 を使用する。辞書操作・ファイルI/O・外部ライブラリとのやり取りを行う際は、すべての文字列を自動的に UCS-2 との間で変換する。
文字コードIDシステム¶
一部の関数では、文字コードを数値IDで参照する。名前で指定できる関数では、テキスト表現の名前を使う(文字コードの名前):
| エンコーディング | テキスト表現 | ID |
|---|---|---|
| Shift JIS | Shift_JIS | 0 |
| UTF-8 | UTF-8 | 1 |
| EUC-JP | EUC-JP | 2 |
| Big5 | Big5 | 3 |
| GB2312 | GB2312 | 4 |
| EUC-KR | EUC-KR | 5 |
| ISO-2022-JP (JIS) | ISO-2022-JP | 6 |
| バイナリ | binary | 126 |
| OSデフォルト | default(OSNative も同じ) | 127 |
文字コードの名前¶
文字コードを名前で指定するときは、上の表のテキスト表現を使う。大文字小文字は区別しない。
使えない名前(UTF-16、ISO-8859-1 など)をシステム関数に渡すと、警告 W0012 を出して失敗する(GETLASTERROR は 12)。どう失敗するかは関数ごとのページを参照。Tc574-8 / Tc603-1 より前は、警告を出さずに OS デフォルトとして扱っていた。
設定ファイル(charset など)に使えない名前を書いたときは、これまでどおり警告を出さずに OS デフォルトになる。
バイナリエンコーディングの特殊ケース¶
バイナリ形式は「UCS-2文字列の下位バイトをそのままバイト列にした特殊な文字コード」。変換なしにデータをやり取りするために FWRITEBIN や FREADBIN などの関数向けに設計されている。
重要な制限: バイナリモードであっても YAYA は文字列内のヌルバイト(0x00)を処理できない。また FUNCTIONEX などの既存システム辞書はバイナリ文字列値を想定していない。