diff --git a/src/DataExchange/TKRWMesh/RWMesh/RWMesh.cxx b/src/DataExchange/TKRWMesh/RWMesh/RWMesh.cxx index 5d51e26b34a..7e740e6c7ce 100644 --- a/src/DataExchange/TKRWMesh/RWMesh/RWMesh.cxx +++ b/src/DataExchange/TKRWMesh/RWMesh/RWMesh.cxx @@ -13,16 +13,26 @@ #include +#include #include #include +namespace +{ +static TCollection_AsciiString ExtendedToUtf8(const TCollection_ExtendedString& theStr) +{ + NCollection_UtfString utf8(reinterpret_cast(theStr.ToExtString())); + return TCollection_AsciiString(utf8.ToCString()); +} +} // namespace + //================================================================================================= TCollection_AsciiString RWMesh::ReadNameAttribute(const TDF_Label& theLabel) { occ::handle aNodeName; return theLabel.FindAttribute(TDataStd_Name::GetID(), aNodeName) - ? TCollection_AsciiString(aNodeName->Get()) + ? ExtendedToUtf8(aNodeName->Get()) : TCollection_AsciiString(); } @@ -40,25 +50,25 @@ TCollection_AsciiString RWMesh::FormatName(RWMesh_NameFormat theFormat, case RWMesh_NameFormat_Product: { occ::handle aRefNodeName; return theRefLabel.FindAttribute(TDataStd_Name::GetID(), aRefNodeName) - ? TCollection_AsciiString(aRefNodeName->Get()) + ? ExtendedToUtf8(aRefNodeName->Get()) : TCollection_AsciiString(); } case RWMesh_NameFormat_Instance: { occ::handle aNodeName; return theLabel.FindAttribute(TDataStd_Name::GetID(), aNodeName) - ? TCollection_AsciiString(aNodeName->Get()) + ? ExtendedToUtf8(aNodeName->Get()) : TCollection_AsciiString(); } case RWMesh_NameFormat_InstanceOrProduct: { occ::handle aNodeName; if (theLabel.FindAttribute(TDataStd_Name::GetID(), aNodeName) && !aNodeName->Get().IsEmpty()) { - return TCollection_AsciiString(aNodeName->Get()); + return ExtendedToUtf8(aNodeName->Get()); } occ::handle aRefNodeName; return theRefLabel.FindAttribute(TDataStd_Name::GetID(), aRefNodeName) - ? TCollection_AsciiString(aRefNodeName->Get()) + ? ExtendedToUtf8(aRefNodeName->Get()) : TCollection_AsciiString(); } case RWMesh_NameFormat_ProductOrInstance: { @@ -66,12 +76,12 @@ TCollection_AsciiString RWMesh::FormatName(RWMesh_NameFormat theFormat, if (theRefLabel.FindAttribute(TDataStd_Name::GetID(), aRefNodeName) && !aRefNodeName->Get().IsEmpty()) { - return TCollection_AsciiString(aRefNodeName->Get()); + return ExtendedToUtf8(aRefNodeName->Get()); } occ::handle aNodeName; return theLabel.FindAttribute(TDataStd_Name::GetID(), aNodeName) - ? TCollection_AsciiString(aNodeName->Get()) + ? ExtendedToUtf8(aNodeName->Get()) : TCollection_AsciiString(); } case RWMesh_NameFormat_ProductAndInstance: {