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

  1. FAQ
  2. »
  3. STEP

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格式。

UTF-8 -> putAttr -> writeFile -> Control Directives -> readFile -> getAttr -> UTF-8

 

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

 

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