字符集不一致导致的
我使用mingw编译的,输出时gbk格式,把原结果转为gbk格式输出就行了
string UTF8ToGBK(const std::string& strUTF8){ int nLen = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0); unsigned short * wszGBK = new unsigned short[nLen + 1]; memset(wszGBK, 0, nLen * 2 + 2); MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, (LPWSTR)wszGBK, nLen);
nLen = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, -1, NULL, 0, NULL, NULL); char *szGBK = new char[nLen + 1]; memset(szGBK, 0, nLen + 1); WideCharToMultiByte(CP_ACP,0, (LPWSTR)wszGBK, -1, szGBK, nLen, NULL, NULL);
std::string strTemp(szGBK); delete[]szGBK; delete[]wszGBK; return strTemp;}
string gbk = UTF8ToGBK(result.toStyledString()); cout << "语音识别本地文件结果:" << endl << gbk;
同问
c++啊,就是给的sdk-demo改的,,运行结果就这样了
exe?你这是用啥语言调用呀?
字符集不一致导致的
我使用mingw编译的,输出时gbk格式,把原结果转为gbk格式输出就行了
string UTF8ToGBK(const std::string& strUTF8)
{
int nLen = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0);
unsigned short * wszGBK = new unsigned short[nLen + 1];
memset(wszGBK, 0, nLen * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, (LPWSTR)wszGBK, nLen);
nLen = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, -1, NULL, 0, NULL, NULL);
char *szGBK = new char[nLen + 1];
memset(szGBK, 0, nLen + 1);
WideCharToMultiByte(CP_ACP,0, (LPWSTR)wszGBK, -1, szGBK, nLen, NULL, NULL);
std::string strTemp(szGBK);
delete[]szGBK;
delete[]wszGBK;
return strTemp;
}
string gbk = UTF8ToGBK(result.toStyledString());
cout << "语音识别本地文件结果:" << endl << gbk;
同问
c++啊,就是给的sdk-demo改的,,运行结果就这样了
exe?你这是用啥语言调用呀?