注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

_T("\xFF\xFE")和"\xFF\xFE"的区别  

2011-04-26 22:40:51|  分类: 疑难杂症 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
        为了判断文本文件是否是Unicode编码,需要对文件的前两个字节进行判断,如果是“FF FE”,就可以把文件当作Unicode编码来处理。
        为此,我写了这样的宏,
#define FILE_HEADER_IS_UNICODE _T("\xFF\xFE")

并作这样的判断:
if (*(WORD *)pbuffer!=*(WORD *)FILE_HEADER_IS_UNICODE)
{
//不是Unicode编码
ATLASSERT(FALSE);

return -1;
}

        然而,跟踪的结果出乎我的意料,Unicode编码的文件,居然被误判为非Unicode编码的!仔细跟踪和查看内存后才发现,原来,
#define FILE_HEADER_IS_UNICODE _T("\xFF\xFE")
        这个等价于“\xFF\x00\xFE\x00\x00\x00”,也就是说,这个宏事实上是6个字节,而不是我所希望的三个字节!于是,改为:
#define FILE_HEADER_IS_UNICODE "\xFF\xFE"
        OK!



原因还是比较简单的,只不过,当_T("ab")换成了_T("\xFF\xFE"),就出现了误判。

By:zhanyonhu
  评论这张
 
阅读(1130)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016