如题:
我用VC7做的一个控件
调用这个控件的函数,会返回一个中文的值给我的HTML页面显示,
在中文操作系统下能够正确显示,可在英文的操作系统下中文就
变成了乱码
当我在控件里面报一个MESSAGEBOX时显示,在英文的操作系统下面
也正确显示中文,可到了HTML页面里就成了乱码
IE的编码我也都做了各种尝试,但均未触发此问题,且直接写到页面
内的中文可以正确显示
我用VC7做的一个控件
调用这个控件的函数,会返回一个中文的值给我的HTML页面显示,
在中文操作系统下能够正确显示,可在英文的操作系统下中文就
变成了乱码
当我在控件里面报一个MESSAGEBOX时显示,在英文的操作系统下面
也正确显示中文,可到了HTML页面里就成了乱码
IE的编码我也都做了各种尝试,但均未触发此问题,且直接写到页面
内的中文可以正确显示
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()); std::string value = ""; // TODO: 在此添加调度处理程序代码
try{
CXMLFile xmlFile;
BSTR tmpBSTR = GetControlPath();
CString path(tmpBSTR);
SysFreeString(tmpBSTR);
if(path.IsEmpty()) return 0;
if(m_filePath.IsEmpty()) {
return SysAllocString(L"error");
}
if(xmlFile.load(path + m_filePath))
value = xmlFile.GetStringByIndex(index,"",valueKeyName,"");
else
return SysAllocString(L"error"); } catch (...) {
//MessageBox("error");
return SysAllocString(L"error");
}
CString tmp = _T(value.c_str());
//MessageBox(tmp);
return tmp.AllocSysString();
}
这种情况多发生在窄字符和BSTR之间转换时指定的转换内码不正确。
你可以把整个程序发给我,或者做简化的例子。
单从这段程序看不出问题。
的读出来,只是在网页里面就出错了
我感觉还是控件里的问题,在不同的语言环境里出错。
BSTR bstr = ::SysAllocStringLen(NULL, nLen);
MultiByteToWideChar(CP_THREAD_ACP, 0, m_tmp, tmp.GetLength(), bstr, nLen);return bstr;
我在控件里面写了一个MESSAGEBOX,正确的显示了值,可是放在页面里面就全错了,而且
全变成了乱码的UNICODE编码,所有的汉字都是
#define _UNICODE看来只有这样才能满足你的要求了。