使用 OdString 和 OdAnsiString 类转换代码

有时开发人员希望将某些文本从多字节编码转换为 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);

这里我们得到 pStr 作为指向 Unicode 缓冲区的指针,作为转换结果:

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();

今天就开始行动

免费试用 ODA 软件 60 天。
无风险,无需信用卡。

免费试用