我怎样才能给"日文/中文"数据?

时间:2015-11-26 09:24:41

标签: c++

上下文:日本样本数据不会像样本中那样显示(cout)。为什么这样?

以下是代码:

std::setlocale(LC_ALL,"");
wchar_t *pStrAddr = L"日本語";
wcout <<"pStrAddr:: "<< pStrAddr << std::endl;

输出观察为:

pStrAddr:: �,�

1 个答案:

答案 0 :(得分:0)

请参阅下面的代码以获得答案,现在效果很好。

  

区域设置代码1:

setenv("LANG","en_US.utf8",1);              //"en_GB.utf8" or "ja_JP.utf8" etc.
cout << "GET ENV .... " << getenv("LANG");
setlocale(LC_ALL,"");
  

区域设置代码2:

setlocale(LC_ALL,"en_US.utf8");

此外,我必须将wcstombssetlocale一起使用。这是我修改后的代码。

setlocale(LC_ALL,"en_US.utf8");
wchar_t *pStrAddr = L"日本語";
wcout <<"pStrAddr:: "<< pStrAddr << std::endl;
cout << "HARDCODED : 日本語" << endl;

char strBuffer[11];                 //char []
int retStrAddr = wcstombs ( strBuffer, pStrAddr, sizeof(strBuffer) );
if (retStrAddr==11)
    strBuffer[11-1]='\0';   //since, not NULL terminated
//to string, as per converter support
std::cout << "multibyte strBuffer: " << strBuffer << '\n';

<强>输出:

pStrAddr:: �,�
HARDCODED : 日本語
multibyte strBuffer: 日本語