关于UNICODE的疑惑。~

mylzw 2004-09-10 07:10:21
俺在看windows程序设计,看到了第二章UNICODE简介。

发现了书上说的很多地方和实际情况不同。比如:wprintf函数无法在win98下使用,可事实上却可以(win98第二版)……诸如此类,总之,书上将UNICODE与ASCII区分的很清楚,比如用char *定义ASCII字符指针,用wchar_t定义UNICODE指针;还有不能用wchar_t类型的指针做strlen函数的参数等,可是事实上,我发现,用char与wchar_t根本就没有区别,strlen函数也能以wchar_t的指针做参数。

到底是怎么回事呢? 是我没有理解书上的意思,还是其它的原因?

最后,我想知道,用printf函数能不能输出一个汉字字符,比如'网'。
我 printf("%c",'网'); 和 wprintf(L"%c",'网');试了,都不行。
...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shitalone 2004-09-10
  • 打赏
  • 举报
回复
我和你一样困惑,希望有更多高手来解答。
up
fxj51983 2004-09-10
  • 打赏
  • 举报
回复
printf("%c",'网');
c是一个字符!网是一个字符串!
你得printf("%s",'网');
rwdx 2004-09-10
  • 打赏
  • 举报
回复
up
mylzw 2004-09-10
  • 打赏
  • 举报
回复
真是感谢大家!
柯本 2004-09-10
  • 打赏
  • 举报
回复
printf("%c",'网'); 和 wprintf(L"%c",'网');都不能显示汉字
因为它只1个字符.而大多编译器将'网'变成两个字符
正确的写法应是printf("%lc",L'网'); ,但实际上,在windows的console方式也不能显示
'网',因为console是GB字符集而非unicode,只有在支持unicode的系统中才能正确显示
如:
wchar_t p[10];
swprintf(p,L"%lc",L'网');
::MessageBox(0,p,"",0);
在wince上就可以显示'网'

kvls 2004-09-10
  • 打赏
  • 举报
回复
首先明确一点ASCII和UNICODE是有区别的
1、在WIN98中之所以能用,可能是由于您的版本问题,后来的一些WIN98加入了一些支持。但不能就此认为WIN98支持UNICOD。
2、能向一些单字节的函数里传入UNICODE的参数,有可能编译通过,但不会得到正确的结果。
3、'网'使用printf输出时,‘网’是一个多字节字符,输出单字节肯定不行,可能输出的是乱码(半个汉字),我没有试过所以说可能是;后一个您的‘网’前加一个L转换。
无聊客 2004-09-10
  • 打赏
  • 举报
回复
char和wchar_t怎么没区别,最起码长度都不一样,可以做strlen的参数不代表执行结果也正确,
Kudeet 2004-09-10
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3320/3320756.xml?temp=.9488794
Kudeet 2004-09-10
  • 打赏
  • 举报
回复
《WINDOWS核心编程》第二章

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧