|
|
@@ -1,4 +1,4 @@
|
|
|
-#include "stdafx.h"
|
|
|
+#include "stdafx.h"
|
|
|
#include "ParticleSTDDB.h"
|
|
|
#include "ParticleSTDTable.h"
|
|
|
#include "ParticleSTD.h"
|
|
|
@@ -7,6 +7,27 @@
|
|
|
|
|
|
namespace OTSClassifyEngine
|
|
|
{
|
|
|
+ namespace{
|
|
|
+
|
|
|
+ std::string utf8ToGbk(const std::string& utf8Str) {
|
|
|
+ // 第一步:UTF-8转UTF-16
|
|
|
+ int wcsLen = MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), -1, nullptr, 0);
|
|
|
+ wchar_t* wcsBuf = new wchar_t[wcsLen];
|
|
|
+ MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), -1, wcsBuf, wcsLen);
|
|
|
+
|
|
|
+ // 第二步:UTF-16转GBK
|
|
|
+ int gbkLen = WideCharToMultiByte(CP_ACP, 0, wcsBuf, -1, nullptr, 0, nullptr, nullptr);
|
|
|
+ char* gbkBuf = new char[gbkLen];
|
|
|
+ WideCharToMultiByte(CP_ACP, 0, wcsBuf, -1, gbkBuf, gbkLen, nullptr, nullptr);
|
|
|
+
|
|
|
+ std
|
|
|
+ ::string gbkStr(gbkBuf);
|
|
|
+ delete[] wcsBuf;
|
|
|
+ delete[] gbkBuf;
|
|
|
+ return gbkStr;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
using namespace OTSSQLITE;
|
|
|
CParticleSTDDB::CParticleSTDDB(CDBStoreBasePtr a_datastore)
|
|
|
{
|
|
|
@@ -130,7 +151,8 @@ namespace OTSClassifyEngine
|
|
|
CString sIncAName;
|
|
|
nCol = (int)CParticleSTDTable::ColumnID::S_StrName - (int)CParticleSTDTable::ColumnID::MIN;
|
|
|
sIncAName = a_query->GetColStringValue(nCol, _T(""));
|
|
|
- stdItem->SetName(sIncAName.GetString());
|
|
|
+ std::string gbkName = utf8ToGbk(sIncAName.GetString());
|
|
|
+ stdItem->SetName(gbkName);
|
|
|
|
|
|
CString sColor;
|
|
|
nCol = (int)CParticleSTDTable::ColumnID::S_COLOR - (int)CParticleSTDTable::ColumnID::MIN;
|
|
|
@@ -244,7 +266,8 @@ namespace OTSClassifyEngine
|
|
|
CString grpName;
|
|
|
nCol = (int)CParticleSTDTable::ColumnID::N_GroupId - (int)CParticleSTDTable::ColumnID::MIN+(int)CSTDGroupTable::ColumnID::S_NAME- (int)CSTDGroupTable::ColumnID::MIN+1;
|
|
|
grpName = a_query->GetColStringValue(nCol, _T(""));
|
|
|
- stdItem->SetGrpName(grpName.GetString());
|
|
|
+ std::string gbkGrpName = utf8ToGbk(grpName.GetString());
|
|
|
+ stdItem->SetGrpName(gbkGrpName);
|
|
|
|
|
|
CString grpColor;
|
|
|
nCol = (int)CParticleSTDTable::ColumnID::N_GroupId - (int)CParticleSTDTable::ColumnID::MIN + (int)CSTDGroupTable::ColumnID::S_COLOR - (int)CSTDGroupTable::ColumnID::MIN+1;
|