# 如何处理STEP SDK中的非拉丁字符？

 1. [FAQ](/cn/faq)
2. »
3.

STEP中的字符串数据始终采用UTF-8格式。当使用getAttr获取字符串时，得到的是UTF-8字符串；当使用putAttr写入字符串时，SDK默认该字符串为UTF-8格式。在写入STEP物理文件时，这些UTF-8数据会隐式转换为所谓的控制指令格式（如'\\X\\C4\\X\\EF\\X\\EA\\X\\DC\\X\\F1\\X\\E9\\X\\E1'）；而在读取STEP物理文件时，又会从控制指令转换回UTF-8格式。

| ```<br>UTF-8 -> putAttr -> writeFile -> Control Directives -> readFile -> getAttr -> UTF-8<br>``` |
| --- |

因此处理字符串数据时，可配合使用OdString和OdAnsiString进行转换：

| ```<br>OdString wStr("АБВГДЕЁ");<br>``` |
| --- |
| ```<br>OdAnsiString ansiStr(wStr, OdCodePageId::CP_UTF_8);<br>``` |
| ```<br>inst->putAttr("string_value", ansiStr); // or inst->putAttr("string_value", ansiStr.c_str());<br>``` |
| ```<br>_writeSpf(model, "file.ifc"); // .ifc file will contain ansiStr data converted into internal representation (Control Directives) of such strings<br>``` |
| ```<br>...<br>``` |
| ```<br>_readSpf("file.ifc", model);<br>``` |
| ```<br>inst->getAttr("stringValue") >> ansiStr; // UTF-8 string with original data<br>``` |
| ```<br>OdString wStr(ansiStr, CP_UTF_8); // WChar string<br>``` |
