1. データ仕様概要
2. JIS0208 > UTF8 変換テーブル
3. UTF8 > JIS0208 変換テーブル
4. サンプルファイル
5. 情報元
[概要]
GF Messenger の開発初期段階ではJIS,UTF8変換マップデータを
プログラム内部に定義していましたが、他の定義などどんどん追加していくと
どうしても領域に余裕が無くなりました。
そのため変換マップデータをPDBファイルにしてアプリと別ファイルにし、
GF Messengerと別クリエーターIDで利用することにしました。
このマップデータをGF Messengerだけで利用するのはもったいないので、
他のアプリケーションでも利用できるように仕様を公開します。
Shift_JIS は JIS0208 から得られるので、このマップデータによって
Shift_JIS と UTF8 の相互変換が可能になります。
※ここで紹介している変換データPDBファイルは GF Messenger に同梱されています。
[共通仕様]
CreatorID chCD
DBType Data
JIS0208 を UTF8 に変換するための変換テーブルデータです。
Palm標準の日本語コード Shift_JIS を UTF-9 に変換するには
Shift_JIS > JIS0208 > UTF8
の順で変換します。
[基本仕様]
ファイル名 JIS0208toUTF8.pdb
CreatorID chCD
DBType Data
DatabaseName Jis0208ToUnicode
[レコードフォーマット]
| name | offset | bytes | データ数 | 型 | 備考 |
| table | 0 | 2 | 23901 | UShort | 変換データ。以下の関数でUTF8コードを取得。 |
レコードサイズはすべて 2byte(UShort) 固定です。
// この関数は サンプルソースに含まれています
// JIS0208 > Unicode
static UInt16 Jisx0208ToUnicode11(UInt16 jis)
{
Handle recHdl;
UInt16 h, l, res = 0x0000;
Jis0208ToUnicodeRec *rec;
if(!dbJis0208Unicode) {return 0x0000;}
h = (jis & 0xff00) >> 8;
l = (jis & 0x00ff);
if ((0x0021 <= h) && (h <= 0x007e) && (0x0021 <= l) && (l <= 0x007e)) {
recHdl = DmQueryRecord(dbJis0208Unicode, (h - 0x0021) * 0x005e + (l - 0x0021));
rec = (Jis0208ToUnicodeRec *)MemHandleLock( recHdl );
res = rec->code;
}
MemHandleUnlock(recHdl);
return res;
}
UTF-8 を JIS0208 に変換するための変換テーブルデータです。
UTF-8 から Shift_JIS を取得するには
UTF-8 > JIS0208 > Shift_JIS
の順で変換します。
[基本仕様]
ファイル名 UTF8toJIS0208.pdb
CreatorID chCD
DBType Data
DatabaseName UnicodeToJis0208
[レコードフォーマット]
| name | offset | bytes | データ数 | 型 | 備考 |
| size | 0 | 2 | 1 | UShort | このレコードのデータ数。0の場合は変換対象無しなので0を返す。 |
| table | 2 | 521 | 256 | UShort[256] | 変換データ。すべて 0x00 の場合はレコード自体存在しない。 |
レコードサイズは 2 か 2 + (2 * 256) です。
UTF-8コードを256個で1レコードとしていますが、この256個セットのデータがすべて 0x0000 の場合は
size = 0x0000 で table が存在しない2byteのレコードになります。
// この関数は サンプルソースに含まれています
// Unicode > JIS0208
static UInt16 Unicode11ToJisx0208(UInt16 unicode)
{
Handle recHdl;
UInt16 h, l, res = 0x0000;
UnicodeToJis0208Rec *rec;
if(!dbUnicodeJis0208) {return 0x0000;}
h = (unicode & 0xff00) >> 8;
l = (unicode & 0x00ff);
recHdl = DmQueryRecord(dbUnicodeJis0208, h);
rec = (UnicodeToJis0208Rec *)MemHandleLock( recHdl );
if (rec->size > 0) {
// データ有り
res = rec->table[l];
} else {
// データなし
}
MemHandleUnlock(recHdl);
return res;
}
以下のサイトから情報をもらいました。ありがとうございました。
UCS と Unicode
いまでぃ 文字コードの解説