win32 api 读unicode字符的奇怪问题

我用ReadFile函数读取文件,每次读两个字节,然后用printf("%c%c",(TCHAR)lpFileDataBuffer[0],(TCHAR)lpFileDat... 我用ReadFile函数读取文件,每次读两个字节,然后用printf("%c%c",(TCHAR)lpFileDataBuffer[0],(TCHAR)lpFileDataBuffer[1]);竟然可以输出一个汉字。如果在%c%c之间加上空格就出现乱码了。为什么%c%c的输出格式会合成一个Unicode的字符? 展开
 我来答
匿名用户
2013-08-22
展开全部
Windows控制台支持的不是Unicode,是MBCS(多字节字符串),一个汉字由两个字节组成,编码是GBK或GB18030,每个字节的值都大于127,在ASCII码里属于不可打印字符,当这两个字节连在一起的时候,控制台根据当前系统的代码页,认为这是一个汉字,所以把这两个字节作为汉字显示,这个工作是由控制台,也就是cmd.exe来完成,与程序无关。这种处理汉字的方式是从DOS时代继承而来的。当两个字符中间是空格的时候,相邻的两个字节无法构成一个汉字的编码,而每一个字节都是不可打印字符,所以输出是?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式