この章の目次にもどる
前頁:3.3 wtstring.h
にもどる
概要
tf.h は TRON Code Framework 文字セット関連ライブラリであり、
文字セットに関連した一連の関数を提供している。
命名規約
ライブラリ関数および外部変数は tf_ のprefixで始まり、全て小文字で記述
する。
型はTF_ のprefixで始まり、全て大文字で記述された名称にtypedefされる。
マクロ定義の定数はTF_ のprefixで始まり、全て大文字で記述する。
全体概要
ライブラリは処理環境に基いて処理を行う。アプリケーションは、最初に処理
環境を獲得し、処理環境を設定した後、処理環境を指定して文字列操作を行う
ことになる。
マルチスレッドアプリケーションからライブラリ関数を利用する場合、タスク
ごとに異なる処理環境を利用することを前提とする。同一の処理環境を共有す
る場合、呼出し側で排他する必要がある。
処理中の動的なメモリ領域の獲得は、デフォルトではmalloc(), realloc(),
free()を使用する。これらは実行時にアプリケーションから置き換え可能であ
る。
アプリケーションは btron/tf.h をincludeする。
処理環境の獲得と解放
○ 型
typedef void *TF_CTX;
処理環境を示す型。
○ 関数
ERR tf_open_ctx(TF_CTX *ctxp)
処理環境を新たに獲得し、*ctxp に格納する。
成功した場合は0を、失敗した場合は負を返す。
ERR tf_close_ctx(TF_CTX ctx)
処理環境を解放する。
成功した場合は0を、失敗した場合は負を返す(通常は失敗しない)。
処理環境の獲得と解放は頻繁に行うべきではない。
ID処理
IDは、ID種別と特定のキーワード文字列とで構成される正の整数値である。
キーワード文字列はアルファベットの大文字小文字は同一視される。
ライブラリ関数での各種の指定は、IDを使用して行う。
○ 関数
WERR tf_to_id(W idtype, const B *keyword)
ID種別 idtype, キーワード文字列keywordで構成されるIDを検索する。
成功した場合はID(>0)を、失敗した場合は負を返す。
WERR tf_id_to_idtype(W id)
ID idのID種別を取り出す。
成功した場合はID種別(>0)を、失敗した場合(無効なIDの場合)は負を
返す。
B *tf_id_to_str(W id)
ID idのキーワード文字列を取り出し、文字列へのポインタを返す。
得られたポインタは内部領域を指しているので、内容を変更してはい
けない。
成功した場合はキーワード文字列へのポインタを、失敗した場合(無
効なIDの場合)は空文字列(0)へのポインタを返す。
ERR tf_id_property(W object_id, W property_id, void *valuep)
オブジェクトID object_idが保持する、プロパティID property_idの
情報を取得し、valuepが指す領域に格納する。valuepが指す領域の型
は、プロパティIDによって異なる。
object_idが情報を保持していない場合はエラー(ER_NOEXS)となる。
ID種別として指定可能なのは以下の通りである。
TF_ID_PROFSET_CONVERTFROM
TF_ID_PROFSET_CONVERTTO
TF_ID_OPT_CONVERT
TF_ID_OPT_DEFAULT
TF_ID_CHARSET
TF_ID_SETOFCHARSET
TF_ID_PROPERTY
キーワードとして指定可能な文字列は、ID種別に依存する。
処理環境の設定
○ 関数
ERR tf_set_profile(TF_CTX ctx, W profsetid)
処理環境ctxに対して、プロファイルセットprofsetidを設定する。
成功した場合は0を、失敗した場合は負を返す。
プロファイルセットはID種別がTF_ID_PROFSET_CONVERTFROMもしくは
TF_ID_PROFSET_CONVERTTOであるIDで指定する。
指定可能なIDは後述の一覧表を参照。
プロファイルセットの設定はコストがかかる処理なので、頻繁に行うべきでは
ない。必要ならば複数の処理環境を獲得し、使い分ける。
外部文字コードとの文字列変換
○ 関数
WERR tf_tcstostr(TF_CTX ctx, const TC *src, W slen, TLANG lang, UW attr,
UB *dst, W *dlenp)
TC文字列srcを、ctxに設定されたプロファイルに従って外部文字コー
ドに変換し、dstに格納する。srcは文字コード、言語指定コードおよ
び付箋(TAD可変長セグメント)で構成される。
srcは変換元となるTC配列へのポインタであり、TNULLまでを変換する。
TNULLに出会う前にslen個(TC単位)に達した場合はそこで終端とみなす。
slenが負の場合は、slenは無視される。
srcの先頭の文字の言語指定状態をlangで指定する。lang が0のとき
は、処理環境に保存された、直前の呼び出し時の状態が適用される。
attrには、srcで指定する文字列について、以下の属性のうちあては
まるものを論理和で指定する。
TF_ATTR_HAN : 文字列は半角修飾された文字列である。
TF_ATTR_CONT : 文字列は終端において終了していない。
TF_ATTR_START : 文字列は先頭において新規に開始する。
(直前の呼び出し時の状態を破棄する)
TF_ATTR_IGNORE_FUSEN : 文字列内の付箋は全て解釈しない。
TF_ATTR_MIME_STRUCTURED_FIELD:
文字列はstructured fieldである。
(MIME_HEADER変換時のみ)
TF_ATTR_IGNORE_FUSENが指定されなければ、付箋のうち、文字拡大/
縮小指定付箋(半角/全角指定付箋)だけは解釈され、文字列の半角修
飾属性を認識する。文字幅の拡大率が1/2倍のとき半角修飾と認識さ
れる。それ以外の付箋、およびTF_ATTR_IGNORE_FUSENが指定されて
いるときは、単に無視(スキップ)される。
srcがNULLの場合は、変換元として空文字列が指定されたとみなす。
この場合でも変換結果が発生する場合がある。
dstは変換結果である外部文字コード文字列を格納するメモリ領域へ
のポインタであり、*dlenpにはそのバイト数を格納して呼び出す。
変換処理の結果、dstに格納したバイト数が*dlenpに格納され戻され
る。dstの大きさが結果の全てを格納するのに満たない場合は、先頭
の一部分が格納され、終端0は格納されない。この場合は、引き続い
てtf_tcstostr()をsrc=NULLとして呼出し、結果の残りを取得する必
要がある。(取得しなかった場合、以後の変換結果は保証されない)
結果が全て格納されるまで、srcで指定する文字列は変更してはいけ
ない。
結果を格納してなお余裕が残っている場合に限り、dstの終端に0が格
納される。*dlenpに格納されるdstの文字列長は、終端0の分を含まな
い。
dstがNULLのときは、変換元の全ての文字列を変換するが、結果の文
字列は格納せず、*dlenpに正しい値を格納して返す。*dlenpに格納さ
れた値は無視される。
あらかじめ、tf_set_profile()を使用して、外部文字セットへの変換
を行うプロファイルセットを処理環境ctxに設定しておかなければい
けない。そうでない場合はエラー(EX_PAR)となる。
関数リターン値
1: 結果の一部を格納した(引き続いてtf_tcstostr()をsrc=NULL
で呼出す必要がある)
0: 変換に成功した。
<0: 失敗した
WERR tf_wtcstostr(TF_CTX ctx, const WTC *src, W slen, UW attr, UB *dst,
W *dlenp)
srcがWTC配列へのポインタである以外は、tf_tcstostr()と同じ。
WERR tf_convtostr(TF_CTX ctx, UB *dst, W *dlenp)
変換元となる文字列を、あらかじめ処理環境ctxに設定されたデコー
ダから取得する以外は、tf_tcstostr()と同じ。
WERR tf_strtotcs(TF_CTX ctx, const UB *src, W slen, UW attr, TC *dst,
W *dlenp)
外部文字コードによる文字列srcを、ctxに設定されたプロファイルに
従ってTC文字列に変換し、dstに格納する。
srcは変換元となる外部文字コードによる文字列へのポインタであり、
終端0までを変換する。終端0に出会う前にslenバイトに達した場合は、
そこで終端とみなす。slenが負の場合は、slenは無視される。
attrには、以下の属性のうちあてはまるものを論理和で指定する。
TF_ATTR_CONT : src文字列は終端において終了していない。
TF_ATTR_START : src文字列は先頭において新規に開始する。
(直前の呼び出し時の状態を破棄する)
TF_ATTR_SUPPRESS_FUSEN : 付箋の出力を抑制する。
srcがNULLの場合もしくはslenが0の場合は、変換元として空文字列が
指定されたとみなす。この場合でも変換結果が発生する場合がある。
dstは変換結果であるTRONコード文字列を格納するTC配列へのポイン
タであり、*dlenpにはその要素数を格納して呼出す。
変換処理の結果、dstに格納した要素数が*dlenpに格納され戻される。
dstの大きさが結果の全てを格納するのに満たない場合は、先頭の一
部分が格納される。引き続いてtf_strtotcs()をsrc=NULLとして呼出
し、結果の残りを取得する必要がある。(取得しなかった場合、以後
の変換結果は保証されない)
結果が全て格納されるまで、srcで指定する文字列は変更してはいけ
ない。
結果を格納してなお余裕が残っている場合に限り、dstの終端にTNULL
が格納される。*dlenpに格納されるdstの文字列長は、終端TNULLの分
を含まない。
TF_ATTR_SUPPRESS_FUSENが指定されないとき、dstの結果として、文
字修飾を行う付箋(TAD可変長セグメント)を含むTC文字列が出力され
る。含まれる付箋は以下の通り
文字拡大/縮小指定付箋(半角/全角指定付箋): ただしh_ratio
は0, w_ratioは0/0(全角指定)もしくは1/2(半角指定)のいず
れか。
TF_ATTR_SUPPRESS_FUSENが指定されたときは、付箋は含まれない。
dstがNULLのときは、変換元の全ての文字列を変換するが、結果の文
字列は格納せず、*dlenpに正しい値を格納して返す。*dlenpに格納さ
れた値は無視される。
あらかじめ、tf_set_profile()を使用して、外部文字セットからの変
換を行うプロファイルセットを処理環境ctxに設定しておかなければ
いけない。そうでない場合はエラー(EX_PAR)となる。
AUTOCONV_JP変換時は、入力文字列からエンコーディングを判定する。
候補はShiftJIS, EUC-JP, ISO-2022-JPのいずれかである。
ただし、変換開始からsrcが以下の条件を満たす間、変換結果は発生
せず、入力文字列はライブラリ内部でバッファリングされる。条件を
満たさなくなった時点で、全ての変換結果が発生する。
a. 入力文字列からエンコーディングを判定できない
b. 入力文字列の長さの合計が内部バッファの大きさを越えない
c. srcがNULLでない
内部バッファの大きさはオプション(TF_ID_OPT_DEFAULT,
"AUTOCONV_LEN")で設定できる。デフォルトでは(外部文字列の長さで)
4096バイトである。
エンコーディングが判定できないまま変換結果が発生するときは、そ
れまでの入力文字列から、可能性のあるエンコーディングが選択され
る。優先順位は ShiftJIS -> EUC-JP -> ISO-2022-JP の順である。
いったん判定されたエンコーディングは、TF_ATTR_START属性を指定す
るか、もしくはtf_set_profile()を再度実行するまで使用され続ける。
関数リターン値
1: 結果の一部を格納した(引き続いてtf_strtotcs()を呼出す必要がある)
0: 変換に成功した。
<0: 失敗した
WERR tf_strtowtcs(TF_CTX ctx, const UB *src, W slen, UW attr, WTC *dst,
W *dlenp)
srcがWTC配列へのポインタである以外は、tf_strtotcs()と同じ。
WERR tf_convfromstr(TF_CTX ctx, const UB *src, W slen)
変換結果を、あらかじめ処理環境ctxに設定されたエンコーダに基い
て出力する以外は、tf_strtotcs()と同じ。
MIME_HEADER指定時の変換は、実装の都合により以下の制約がある。
・ srcとして指定する文字列は、field-nameおよびfield-bodyの双方を含むヘッ
ダ行全体を含む必要がある。TF_ATTR_CONTを使用し、複数回の呼び出しに
分割して渡すことはできない。
MIMEデコードを行うとき、変換元の文字列がfoldingされて複数行に渡る場
合は、改行を含む複数行全体を指定する。
MIMEエンコードを行うとき、変換先の文字列はfoldingされ複数行に渡る場合が
ある。
メッセージボディのMIMEデコードおよびMIMEエンコードはサポートされない。
処理オプションの設定
変換処理に伴う詳細な挙動はオプションにより指定する。
○ 関数
ERR tf_set_options (TF_CTX ctx, W optid, W value)
処理環境ctxに対して、オプションoptidの値としてvalueを設定する。
成功した場合は0を、失敗した場合は負を返す。
オプションはID種別がTF_ID_OPT_*であるIDで指定する。
以下にID種別とキーワード文字列の組で示す。
値として-1を指定した場合、デフォルトの値を指定したとみなされる。
TF_ID_OPT_CONVERT, "CONV_SBCHAR_HAN"
0: 1バイト文字を半角修飾文字に変換する(デフォルト)
1: 1バイト文字を修飾しない
(外部文字セットからの変換時に有効)
0: 半角修飾の文字は1バイト文字への、全角修飾の文字は2
バイト文字への変換を優先する(デフォルト)
1: 半角・全角修飾に関わらず、2バイト文字への変換を優先
する
2: 半角・全角修飾に関わらず、1バイト文字への変換を優先
する
3: 半角・全角修飾を厳密に解釈する。
(外部文字セットへの変換時、文字セットの判別時に有効)
TF_ID_OPT_CONVERT, "CONV_KANA_HAN"
0: 半角修飾のカタカナは1バイト文字に変換する(デフォルト)
1: 半角修飾のカタカナも2バイト文字に変換する
(外部文字セットへの変換時、文字セットの判別時に有効)
TF_ID_OPT_CONVERT, "SBCHAR_5C"
0: ASCII 0x5cを特別扱いしない(デフォルト)
1: 1バイト文字0x5cを文字セットの定義を無視して常に"\"
に変換する
2: 1バイト文字0x5cを文字セットの定義を無視して常に"¥"
に変換する
(外部文字セットからの変換時に有効)
0: 1バイト文字への変換時、"\"と"¥"を特別扱いしない
(デフォルト)
1: 1バイト文字への変換時、文字セットの定義を無視して
"\"と"¥"の両方を(ASCIIの)0x5cとみなす
(外部文字セットへの変換時、文字セットの判別時に有効)
TF_ID_OPT_CONVERT, "SBCHAR_7E"
0: 1バイト文字への変換時、"~"と" ̄"を特別扱いしない
(デフォルト)
1: 1バイト文字への変換時、"~"と" ̄"の両方を(ASCIIの)
0x7eとみなす
(外部文字セットへの変換時、文字セットの判別時に有効)
TF_ID_OPT_CONVERT, "ASCII_TO_UNICODE"
0: ASCIIをTRONコードのJIS X 0208面に変換する(デフォルト)
1: ASCIIをTRONコードのUnicode面に変換する
(外部文字セットからの変換時に有効)
TF_ID_OPT_CONVERT, "TRON_NUMERIC_REFERENCE"
0: TRONコードの数値による参照を解釈しない(デフォルト)
1: "&Txxxxxx;"表記によるTRONコード参照を解釈する
(外部文字セットからの変換時に有効)
TF_ID_OPT_CONVERT, "UNDEFINED_CHAR"
0: 〓に置換する
1: 未定義文字はエラーとなる
2: 未定義文字もそのまま変換される(デフォルト)
3: コード表記(<0x2345> 等の形式)に変換する
(外部文字セットからの変換時に有効)
TF_ID_OPT_CONVERT, "ILLEGAL_ENCODE"
0: 不完全なエンコードは無視する(デフォルト)
1: 不完全なエンコードはエラーとなる
(外部文字セットからの変換時に有効)
TF_ID_OPT_CONVERT, "OLD_NEW_JIS"
0: JIS X 0208:1978(旧JIS)を新JISと同一視する。(デフォルト)
1: JIS X 0208:1978(旧JIS)のうち、新JISとは字形が異なる文字は
区別する
(外部文字セットからの変換時・外部文字セットへの変換時に有効)
TF_ID_OPT_CONVERT, "UNSUPPORTED_CHAR"
0: 〓もしくは?(および相当する代替文字)に置換する(デフォルト)
1: 変換不可能な文字はエラーとなる
2: "&Txxxxxx;"表記によるTRONコード参照に変換する
(外部文字セットへの変換時に有効)
TF_ID_OPT_CONVERT, "LINEBREAK"
0: LF, CR+LF, CRを自動判別して改段落に変換(デフォルト)
1: LFを改段落に変換
2: CR+LFを改段落に変換
3: CRを改段落に変換
(外部文字セットからの変換時に有効)
0: 改段落をCR+LFに変換
1: 改段落をLFに変換
2: 改段落をCR+LFに変換
3: 改段落をCRに変換
(外部文字セットへの変換時に有効)
TF_ID_OPT_CONVERT, "ALLOW_JISX0212"
0: JIS X 0212への変換を許容する(デフォルト)
1: JIS X 0212への変換を許容せず、変換不可能な文字とみなす
(外部文字セットへの変換時に有効)
TF_ID_OPT_CONVERT, "ALLOW_JISX0213_1"
0: JIS X 0213 第1面への変換を許容する(デフォルト)
1: JIS X 0213 第1面への変換を許容せず、JIS X 0213 第1面にあって
JIS X 0208にない文字は変換不可能な文字とみなす。
(外部文字セットへの変換時に有効)
TF_ID_OPT_CONVERT, "ALLOW_JISX0213_2"
0: JIS X 0213 第2面への変換を許容する(デフォルト)
1: JIS X 0213 第2面への変換を許容せず、変換不可能な文字とみなす
(外部文字セットへの変換時に有効)
TF_ID_OPT_DEFAULT, "BLOCKLEN" 内部で一度に処理する文字数。
大きいと処理効率が良いが、メモリを消費
する。(デフォルトは256)
TF_ID_OPT_DEFAULT, "AUTOCONV_LEN"
AUTOCONV_* による変換時、エンコーディングが判定できるまで
内部にバッファリングする最大バイト数。(デフォルトは4096)
文字セットの判定
TRONコードの文字は、個々に複数の外部文字セットに属している。アプリケー
ションは、文字セット判別ライブラリ関数を使用して、変換対象とすべき適切
な外部文字セットを判定する。
○ 関数
ERR tf_init_charset(TF_CTX ctx)
処理環境ctxの、文字セット集合情報を初期化する。
tf_aggregate_charset*()関数に先立って実行する必要がある。
関数リターン値
0: 成功
<0: 失敗(メモリの獲得に失敗した)
WERR tf_query_charset_tcs(TF_CTX ctx, const TC *src, W slen, TLANG lang,
UW attr, W charsetid)
TC文字列srcを表現可能な文字セットを判定する。
charsetidとして、ID種別がTF_ID_CHARSETであるIDを指定した場合、
キーワードで指定された文字セットで表現可能かどうかを判定する。
charsetidとして、ID種別がTF_ID_SETOFCHARSETであるIDを指定した
場合、キーワードで指定された文字セット集合が表す文字セットの中
から表現可能な文字セットを選択し、該当する文字セットをID種別が
TF_ID_CHARSETであるIDで返す。
処理環境ctxに格納された文字セット集合情報には影響を与えない。
(tf_aggregate_charset_*()/tf_query_charset()とは独立して使用でき
る)
あらかじめ tf_init_charset()を使用して、文字セット集合情報を初
期化しておかなければいけない。そうでない場合はエラー(EX_PAR)と
なる。
関数リターン値
>0: 表現できる(文字セットを表す、ID種別がTF_ID_CHARSETであるID)
0: 表現できない
<0: 失敗
WERR tf_aggregate_charset_tcs(TF_CTX ctx, const TC *src, W slen,
TLANG lang, UW attr)
TC文字列srcを構成する各文字が属する文字セットの集合を求め、処
理環境ctxに格納された文字セット集合情報に加算する。srcは文字コー
ド、言語指定コードおよび付箋(TAD可変長セグメント)で構成される。
srcは変換元となるTC配列へのポインタであり、TNULLまでを変換する。
TNULLに出会う前にslen個(TC単位)に達した場合はそこで終端とみなす。
slenが負の場合は、slenは無視される。
srcの先頭の文字の言語指定状態をlangで指定する。lang が0のとき
は、処理環境に保存された、直前の呼び出し時の状態が適用される。
attrには、srcで指定する文字列について、以下の属性のうちあては
まるものを論理和で指定する。
TF_ATTR_HAN : 文字列は半角修飾された文字列である。
TF_ATTR_CONT : 文字列は終端において終了していない。
TF_ATTR_START : 文字列は先頭において新規に開始する。
(直前の呼び出し時の状態を破棄する)
TF_ATTR_IGNORE_FUSEN : 文字列内の付箋は全て解釈しない。
TF_ATTR_IGNORE_FUSENが指定されなければ、付箋のうち、文字拡大/
縮小指定付箋(半角/全角指定付箋)だけは解釈され、文字列の半角修
飾属性を認識する。文字幅の拡大率が1/2倍のとき半角修飾と認識さ
れる。それ以外の付箋、およびTF_ATTR_IGNORE_FUSENが指定されて
いるときは、単に無視(スキップ)される。
tf_aggregate_charset_*()関数を最初に呼び出す前には、あらかじめ
tf_init_charset()を使用して、文字セット集合情報を初期化してお
かなければいけない。そうでない場合はエラー(EX_PAR)となる。
関数リターン値
1: 成功(文字セット集合情報に変化があった)
0: 成功(文字セット集合情報に変化はない)
<0: 失敗(不正な文字列)
ERR tf_aggregate_charset_wtcs(TF_CTX ctx, const WTC *src, W slen, UW attr)
srcがWTC配列へのポインタである以外は、
tf_aggregate_charset_tcs()と同じ。
WERR tf_query_charset(TF_CTX ctx, W charsetid)
処理環境ctxに格納された文字セット集合情報を参照し、
tf_aggregate_charset*()関数で指定された文字列を表現可能な文字
セットを判定する。
charsetidとして、ID種別がTF_ID_CHARSETであるIDを指定した場合、
キーワードで指定された文字セットで表現可能かどうかを判定する。
charsetidとして、ID種別がTF_ID_SETOFCHARSETであるIDを指定した
場合、キーワードで指定された文字セット集合が表す文字セットの中
から表現可能な文字セットを選択し、該当する文字セットをID種別が
TF_ID_CHARSETであるIDで返す。
関数リターン値
>0: 表現できる(文字セットを表す、ID種別がTF_ID_CHARSETであるID)
0: 表現できない
<0: 失敗(tf_aggregate_charset*()関数は呼び出されていない)
charsetidはID種別がTF_ID_CHARSETもしくはTF_ID_SETOFCHARSETであるIDで指
定する。指定可能なIDは後述の一覧表を参照。
文字セットの一覧
変換時のプロファイルセットおよび文字セット判定の対象としてIDを指定する
とき、キーワードとして指定可能な文字エンコーディング名の一覧を以下に示
す。
文字エンコーディング名 外部→TRON TRON→外部 判定 日本語名称
---------------------------------------------------------------------
"Shift_JIS" ○ ○ ○ 日本語(Shift_JIS)
"Shift_JISX0213" ○ ○ ○ 日本語(Shift_JISX0213)
"EUC-JP" ○ ○ ○ 日本語(EUC-JP)
"EUC-JISX0213" ○ ○ ○ 日本語(EUC-JISX0213)
"ISO-2022-JP" ○ ○ ○ 日本語(ISO-2022-JP)
"ISO-2022-JP-2" ○ ○ ○ 日本語(ISO-2022-JP-2)
"ISO-2022-JP-3" ○ ○ ○ 日本語(ISO-2022-JP-3)
"Big5" ○ ○ ○ 伝統字中国語(Big5)
"EUC-TW" ○ ○ ○ 伝統字中国語(EUC-TW)
"GB2312" ○ ○ ○ 簡体字中国語(GB2312)
"ISO-2022-CN" ○ ○ ○ 中国語(ISO-2022-CN)
"EUC-KR" ○ ○ ○ 韓国語(EUC-KR)
"ISO-2022-KR" ○ ○ ○ 韓国語(ISO-2022-KR)
"US-ASCII" ○ ○ ○ 西欧(US-ASCII)
"ISO-8859-1" ○ ○ ○ 西欧(ISO-8859-1)
"UTF-8" ○ ○ ○ 各国(UTF-8)
"UTF-7" ○ ○ ○ 各国(UTF-7)
"UTF-16" ○ ○ ○ 各国(UTF-16)
"UTF-16BE" ○ ○ ○ 各国(UTF-16BE)
"UTF-16LE" ○ ○ ○ 各国(UTF-16LE)
"EXTC" ○ ○ ×
"MIME_HEADER" ○ ○ ×
"MIME_HEADER_EXTC" ○ ○ ×
"AUTOCONV_JP" ○ × × 日本語(自動判別)
※ 外部→TRON : ID種別=TF_ID_PROFSET_CONVERTFROM 時に有効なキーワード
TRON→外部 : ID種別=TF_ID_PROFSET_CONVERTTO 時に有効なキーワード
文字セット判定: ID種別=TF_ID_CHARSET 時に有効なキーワード
文字セット判定の対象として文字セット集合を指定するとき、キーワードとし
て指定可能な文字セット集合名とその対象となる文字セットを以下に示す。
ID種別=TF_ID_SETOFCHARSETとなる。
なお、いずれの文字セット集合においても、US-ASCII, ISO-8859-1は全ての文
字集合に優先して判定され、またUTF-8が最後に判定される。
キーワード 日本語名称 対象文字セット
--------------------------------------------------------------------------
"MESSAGE_JP" 日本語 US-ASCII
ISO-8859-1
ISO-2022-JP
ISO-2022-JP-2
ISO-2022-JP-3
UTF-8
"MESSAGE_LATIN1" 西欧 US-ASCII
ISO-8859-1
UTF-8
"MESSAGE_KR" 韓国語 US-ASCII
ISO-8859-1
ISO-2022-KR
UTF-8
"MESSAGE_CN" 簡体字中国語 US-ASCII
ISO-8859-1
GB2312
UTF-8
"MESSAGE_TW" 伝統字中国語 US-ASCII
ISO-8859-1
Big5
UTF-8
"MESSAGE_ISO-2022-JP" 日本語(ISO-2022-JP固定) US-ASCII
ISO-2022-JP
"MESSAGE_ISO-2022-JP-2" 日本語(ISO-2022-JP-2固定) US-ASCII
ISO-2022-JP
ISO-2022-JP-2
"MESSAGE_ISO-8859-1" 西欧(ISO-8859-1固定) US-ASCII
ISO-8859-1
"MESSAGE_US-ASCII" 西欧(US-ASCII固定) US-ASCII
○ 補足
・ 日本語について
EUC-JPはUS-ASCII, JIS X 0208, JIS X 0201かな, JIS X 0212で構成
される。
EUC-JISX0213は、EUC-JPの文字集合に加えてJIS X 0213で構成される。
ISO-2022-JPはUS-ASCII, JIS X 0201(右半分・カタカナを除く)と、
JIS X 0208で構成される。
ISO-2022-JP-2はISO-2022-JPの文字集合に加えて、JIS X 0212, GB 2312,
KS X 1001, ISO-8859-1, ISO-8859-7で構成される。
ISO-2022-JP-3はUS-ASCII, JIS X 0208, JIS X 0213で構成される。
Shift_JISはJIS X 0201, JIS X 0208で構成される。
Shift_JISX0213はShift_JISに加えてJIS X 0213で構成される。
Internet mailの場合、ISO-2022-JP-2よりもUTF-8の方が、相互運用
性は高いかもしれない。
JIS X 0208-1978は未サポート。
Windows環境で使用されるJIS 13区拡張(丸付数字)・IBM拡張漢字・
NEC選定IBM拡張漢字は未サポート。(CP932)
NTTドコモ iモード絵文字は未サポート。
GT面・大漢和面からJISへの変換は未サポート。
・ 中国語について
GB2312はUS ASCIIとGB 2312で構成される。
Big5はCNS 11643 plane 1/2を別のマッピングに割り当てたものであ
る。マッピングは1対1ではない。もともと公的な規格ではなく詳細な
部分はベンダ依存なので、完全には相互運用性が確保できていないと
思われる。
EUC-TWはUS ASCIIとCNS 11643で構成される。plane1-7の全ての文字の
割り当てがあるが、B-right/V R3においてフォントが存在するのは
plane1/2だけである。
ISO-2022-CN はUS ASCII, GB 2312, CNS 11643 plane1/2で構成され
る。
GB2312はEUC-CN, CN-GBの別名を持つ。
Big5はCN-Big5の別名を持つ。
中国はGB 2312以外にも多くの文字セットを定義しているが、サポー
トされていない。(GB 6345.1-86, GB 8565.2-88, ISO-IR-165:1992,
GB/T 12345-90, GB 7589-87, GB/T 13131-9X, GB 7590-87,
GB/T 13132-9X, GBK 等)
ASCIIに相当する1バイト文字セット GB 1988-89 および
CNS 5205-1989は未サポートである。
台湾のBig5+, CCCIIはサポートされていない。
香港のGCCSはサポートされていない。
ISO-2022-CN-EXTは未サポートである。
HZ-GB-2312(HZ encoding)は未サポートである。
GBK Encodingはサポートされていない。
Big5の香港拡張はサポートされていない。
・ 韓国語について
ASCIIに相当する1バイト文字セット KS X 1003:1993 は未サポートで
ある。
KS X 1002:1991はサポートされていない。
北朝鮮のKPS 9566-97はサポートされていない。
中国のGB 12052-89はサポートされていない。
Johab Encodingはサポートされていない。
・ Unicodeについて
UTF-16はエンディアンの相違により3種類のキーワードがある。
"UTF-16BE"はビッグエンディアン固定、"UTF-16LE"はリトルエンディ
アン固定である。
"UTF-16"は、外部文字セットからTRONコードに変換する際は、文字列
先頭のBOM(Byte Order Mark)を解釈する。BOMがない場合はCPUのエン
ディアン形式と同一とみなす。TRONコードから外部文字セットに変換
する際は、CPUのエンディアン形式固定である。
UTF-16において、外部文字セットからTRONコードに変換する際、文字
列中のBOMは無視される。TRONコードから外部文字セットに変換する
際、文字列先頭にBOMは格納されない。
プロパティ
プロパティ取得時にプロパティIDを指定するとき、プロパティIDのキーワード
として指定可能な文字列の一覧と、その制約を以下に示す。
ID種別=TF_ID_PROPERTYとなる。
"MIME_TRANSFER_ENCODING"
文字セットに対応する、適切なエンコーディングを取得する。
valuepはW *でなければならない。
以下の値のいずれかが格納される。
0: 7bit
1: quoted-printable
2: base64
ID種別がTF_ID_CHARSETであるオブジェクトIDについて取得可能。
この章の目次にもどる
前頁:3.3 wtsring.h
にもどる