Coreseek®  
 | 首页 | 注册 | 回复 | 搜索 | 统计资料 |                 网站首页产品服务开放源码安装使用常见问题中文手册社区交流联系我们 
中文分词 论坛首页 / 中文分词 /

读代码读到的问题

 
DreamDreams
会员
#1 | 发表时间: 2010 05 29 19:42
回复 
文件mmseg_main.cpp的代码片段
        char txtHead[3] = {239,187,191};
        char* tok = (char*)seg->peekToken(len, symlen);
        seg->popToken(len);
        if(seg->isSentenceEnd()){
                do {
                        char* kwtok = (char*)seg->peekToken(kwlen , kwsymlen,1);
                        if(kwsymlen)
                                printf("[kw]%*.*s/x ",kwsymlen,kwsymlen,kwtok);
                }while(kwsymlen);
        }

        if(len == 3 && memcmp(tok,txtHead,sizeof(char)*3) == 0){
                //check is 0xFEFF
                //do nothing
        }else{
                printf("%*.*s/x ",symlen,symlen,tok);
        }

没看明白memcmp这一行,为什么239,187,191三个数字代表0xFEFF,怎么转换的?另外这种用法估计不利于移植,有字节顺序问题,还可能有32/64bit的问题。

请大拿们不吝赐教。我只到239,187,191三个数字的问题估计是我对unicode不太了解,不过想了半天实在是没有头绪。
HonestQiao
会员
#2 | 发表时间: 2010 05 30 22:01
回复 
Unicode BOM
DreamDreams
会员
#3 | 发表时间: 2010 05 31 21:13
回复 
整明白了,EF BB BF(239 187 191)是UTF 0xFEFF的utf-8编码之后的结果。
谢谢。
 
回复
Bold Style  Italic Style  Image 链接  URL 链接 
发帖注意:
  • 网址中请去掉http://开头,例如:您需要输入www.coreseek.cn,而不是http://www.coreseek.cn
  • 咨询问题,请贴出详细的操作系统版本、Coreseek版本(Linux环境请给出编译参数)
  • 请仔细查看中文手册和本站安装指南,确认操作正确
  • 请仔细查看常见问题解答,也许你的问题已经有解决方法

» 帐号  » 密码 
发帖前请登陆, 或者 注册 .