c++ - 我如何提供 "Japanese/Chinese"数据?

标签 c++

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

代码如下:

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

观察到的输出为:

pStrAddr:: �,�

最佳答案

请查看下面的代码以获得答案,它现在运行良好。

Locale setting Code 1:

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

Locale setting Code 2:

setlocale(LC_ALL,"en_US.utf8");

我还必须使用 wcstombs连同 setlocale .这是我修改后的有效代码。

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: 日本語

关于c++ - 我如何提供 "Japanese/Chinese"数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33934762/

相关文章:

c++ - 是否有 C++ 函数来计算两个索引之间的距离?

c++ - 无法使用 MinGW 链接到 SDL2 函数

c++ - XML 解析器包装器

c++ - 是否可以防止在没有专门化的情况下使用 C++ 模板?

c++ - gtkmm:如何在没有构建器的情况下创建弹出菜单?

c++ - 如何使用 WinAPI 重启 Windows 8/10 并进入高级启动选项?

c++ - 来自模板化基类的派生类

c++ - 如何从 iptables 队列中的数据包中提取源端口号和目标端口号

c++ - 意外的 undefined reference

c++ - 当注册表中不存在 CLSID 时如何查找 DLL