我们的服务器最初是为在 Solaris 上运行而设计的。我们一直在进行更改,使其可以在 Linux 上运行(当前环境是 Red Hat Linux),但由于某种原因mbstowcs
无法运行。我已经确认了代码中至少两个地方,一个是:
template<class ParamType>
CLStatus Convert(const ParamType &xParam, std::wstring &xStr)
{
std::stringstream strStream;
strStream.str("");
strStream << xParam;
size_t length = mbstowcs(NULL, strStream.str().c_str(), 0);
wchar_t *buffer = new wchar_t[length + 1];
mbstowcs(buffer, strStream.str().c_str(), length);
如果xParam
包含变音符号,则length
最终为 -1。相同的代码适用于 Solaris,但不适用于 Linux。有人有想法么?
我查看了他们是否使用不同的语言环境,但两者都在使用LC_ALL="en_US"