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---------------------
阅读(404) | 评论(0) | 转发(0) |