開発者がマルチバイトコーディングから Unicode または UTF へ、そしてその逆へテキストを変換したい場合があります。この目的のために、OdString および OdAnsiString クラスを使用できます。Teigha バージョン 4.3.0 以降、CP_UTF_8 コーディングがサポートされるコーディングリストに含まれるようになりました。
たとえば、UTF-8 コーディングの次の文字配列は、ロシア語で「Test string」です。
char testStr[] = { '\xD0', '\xA2', '\xD0', '\xB5', '\x63', '\xD1', '\x82', '\xD0', '\xBE', '\xD0', '\xB2', '\xD0', '\xB0', '\xD1', '\x8F', '\x20', '\xD0', '\xA1', '\xD1', '\x82', '\xD1', '\x80', '\xD0', '\xBE', '\xD0', '\xBA', '\xD0', '\xB0', 0 };
初期化された UTF-8 ANSI 文字列は次のとおりです。
OdAnsiString ansiStr(testStr, CP_UTF_8);
ASCII バッファのみを持つ OdString は次のとおりです。
OdString unicodeStr(ansiStr);
ここでは、変換の結果として Unicode バッファへのポインタとして pStr を取得します。
const OdChar *pStr = unicodeStr.c_str();
unicodeStr は、両方のバッファ (ASCII と Unicode) が同期されています。unicodeStr から OdAnsiString を取得するには、内容が一定である限り、ASCII バッファは変換なしで使用されます。
これで、初期化された Unicode 文字列が得られました。
OdString unicodeStr1(pStr);
unicodeStr1 は、初期化された Unicode バッファのみを持っています。
ここでは、sAnsiUtf8 で UTF-8 テキストを取得します。
OdAnsiString sAnsiUtf8(nStr, CP_UTF_8);
ここでは、sAnsi1251 で ANSI_1251 テキストを取得します。
OdAnsiString sAnsi1251(sStr, CP_ANSI_1251);
ここでは、コードページ ANSI_1251 を持つ ASCII テキストを使用して OdString を初期化します。
OdString sStr1251(sAnsi1251);
そして、ここではバッファの同期中の変換の結果として Unicode 文字列を取得します。
const OdChar *pStr = nStr1251.c_str();