[返回博客](/cn/blog) # 使用 OdString 和 OdAnsiString 类转换代码

Sergey Zaitsev 二月 23, 2017 [\#conversion](/cn/blog/tag/conversion) [\#Example](/cn/blog/tag/example)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

有时开发人员希望将某些文本从多字节编码转换为 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 天。  
无风险，无需信用卡。**

[免费试用](https://staging.opendesign.com/cn/free-trial)
