文章作者:里海
来源网站:https://blog.youkuaiyun.com/WangPaiFeiXingYuan
简介:
捕获NX OPEN C++异常,乱码问题。
效果:
使用uc1601(ex.what(),1)显示乱码
使用 NXMessageBox()->Show("Block Styler", NXMessageBox::DialogTypeError, ex.what());则正常显示
处理乱码后的效果:
代码:
string UTF8ToGB(const char* str)
{
std::string result;
WCHAR* strSrc;
LPSTR szRes;
int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
strSrc = new WCHAR[i + 1];
MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);
i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);
szRes = new CHAR[i + 1];
WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);
result = szRes;
delete[]strSrc;
delete[]szRes;
return result;
}
void Edit()
{
try
{
NXOpen::Session* theSession = NXOpen::Session::GetSession();
... ...
}
catch (exception& ex)
{
//Open C++抛出的异常信息ex.what()是UTF-8编码,得转换
uc1601(UTF8ToGB(ex.what()), 1);
}
}