Chinaunix首页 | 论坛 | 博客
  • 博客访问: 578094
  • 博文数量: 752
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(752)

文章存档

2011年(1)

2008年(751)

我的朋友

分类:

2008-10-13 16:54:18

dragonzht:该软件有个错误,计算字符串中有多少个字符时出错了
文件\xercesc\util\Transcoders\Win32\Win32TransService.cpp中line844有下面代码
unsigned int Win32LCPTranscoder::calcRequiredSize(const char* const srcText)
{
    if (!srcText)
        return 0;

    unsigned charLen = ::mblen(srcText, MB_CUR_MAX);
    if (charLen == -1)
        return 0;
    else if (charLen != 0)
        charLen = strlen(srcText)/charLen;

    if (charLen == -1)
        return 0;
    return charLen;
}
用来计算字符串中有多少个字符(中文字符算一个)
例如字符串"我是dragonzht"中有11个字符

使用下面代码就可以测试其错误:
#include 
#include 
#include
#include 

int len(char*srcText){
    代码同上
}

void main(){
setlocale(LC_ALL,"chinese-simplified");
cout< cout< cout<}
在我机器上运行结果是
6
6
3
预期结果是
6
5
5

这就是该软件处理中文时时好时坏的根本原因.
有时是正确的,有时又丢掉了后面几个字符
比如上面"我是dragonzht"被转换编码后就变成了
"我是drag"
(发表于2003-9-10 13:01:00)

..........................................................................
--------------------next---------------------

阅读(393) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~