|
|
|||||||||
|
|||||||||
|
|
*TX 06 - 中国語簡体字の変換(96 年 2 月 9 日)Q: どうすれば Macintosh の簡体字エンコーディングを対応する GB 標準に変換できますか。
A: 簡体字に対する Mac のエンコーディングはシフト GB2312 です。GB2312 から Mac エンコーディングへの変換を行うには、それぞれの文字に
// 文字の変換が必要な場合は true を返し、文字が 1 バイト文字
// (先頭のバイトだけが処理された文字という意味) の場合は false を返す
// (つまり、戻り値の false は、その文字がローマ字だということを意味する)
boolean MacToGB2312(unsigned char first, unsigned char second,
unsigned short *output)
{
if (first < 0x81) {
*output = first;
return false;
} else {
unsigned short temp;
temp = (first - 0x80) << 8;
temp += (second - 0x80);
*output = temp;
return true;
}
}
// これで常に変換が行われ、バイトを個別に取得したり、変換が行われたか
// どうかを知らせる論理値を返す必要はない
void GB2312ToMac(unsigned short input, unsigned short *output)
{
*output = input + 0x8080;
}
コードからもわかるように、2 バイト文字では両方のバイトをシフトする必要があります。これにより、ある文字が 2 バイト文字の一部であるのか、または 1 バイトのローマ字であるのかが明らかになります。
参考文献 * Understanding Japanese Information Processing, by Ken Lunde, published by O'Reilly & Associates. * Ken Lunde のホームページは http://jasper.ora.com/lunde/。このホームページでは、主として日本語の文字列処理とその標準化に関する情報が公開されていますが、中国語と韓国語の情報処理に関するリンクも用意されています。 |