当前位置: 技术问答>linux和unix
linux下wprintf为什么没有输出?
来源: 互联网 发布时间:2015-11-17
本文导语: #include #include #include int main(void) { wchar_t* wstr=L"哈罗";; setlocale(LC_CTYPE,"") wprintf(L"%st",wstr); return 0; } linux系统中的LANG= zh_CN.GB18030 redflag 4 个人版 输出为空,为什么?是不是系统要进行什...
#include
#include
#include
int main(void)
{
wchar_t* wstr=L"哈罗";;
setlocale(LC_CTYPE,"")
wprintf(L"%st",wstr);
return 0;
}
linux系统中的LANG= zh_CN.GB18030
redflag 4 个人版
输出为空,为什么?是不是系统要进行什么设置?
#include
#include
int main(void)
{
wchar_t* wstr=L"哈罗";;
setlocale(LC_CTYPE,"")
wprintf(L"%st",wstr);
return 0;
}
linux系统中的LANG= zh_CN.GB18030
redflag 4 个人版
输出为空,为什么?是不是系统要进行什么设置?
|
因为"哈罗"这两个字的编码,本身是GB2312.比如是 0x8400 0x8500
你是用GB2312中文输入法输入的。所以是GB2312.
而wchar是换成unicode的。
所以。用wprintf输出为unicode的字符。而unicode的0x8400对应的是另一个汉字。'鹿'
//这样是可以输出的。
lang = GB2312;
#include
#include
#include
int main(void)
{
wchar_t a[3];
wchar_t* wstr=L"哈罗";
a[1] = 0x7F57; //unicode "哈"
a[0] = 0x54c8; //unicode "罗"
a[2] = L'';
setlocale(LC_CTYPE,"");
wprintf(L"%Sn",a);
return 0;
}
如果lang = utf8;
那么,当你重新打开你的C源文件时,“哈罗”两字已经变成其它字符了。
你是用GB2312中文输入法输入的。所以是GB2312.
而wchar是换成unicode的。
所以。用wprintf输出为unicode的字符。而unicode的0x8400对应的是另一个汉字。'鹿'
//这样是可以输出的。
lang = GB2312;
#include
#include
#include
int main(void)
{
wchar_t a[3];
wchar_t* wstr=L"哈罗";
a[1] = 0x7F57; //unicode "哈"
a[0] = 0x54c8; //unicode "罗"
a[2] = L'';
setlocale(LC_CTYPE,"");
wprintf(L"%Sn",a);
return 0;
}
如果lang = utf8;
那么,当你重新打开你的C源文件时,“哈罗”两字已经变成其它字符了。
|
把setlocale(LC_CTYPE,"")注释掉试试。