免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2565 | 回复: 7
打印 上一主题 下一主题

怎样检测一个汉字串中是否包含乱码? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-27 16:45 |只看该作者 |倒序浏览
有一姓名字段,长度为"8"要求检测出该字段中是否含有空格或乱码.
即如下形式:
    " 李  明 "
    "  李明#/"
    "    李明/"
就是说该姓名的前、后中间都不允许出现空格或者乱码,请教各位有什么好的算法?

论坛徽章:
0
2 [报告]
发表于 2007-01-27 18:08 |只看该作者
如果你能确保没有半个汉字出现的情况下,还是可以做的。

论坛徽章:
0
3 [报告]
发表于 2007-01-27 23:13 |只看该作者
LZ需要学习汉字编码, 比如GB2312, DBCS和Unicode, 学习清楚这些概念后在考虑这个问题, 我想你的思路会清楚很多.

论坛徽章:
0
4 [报告]
发表于 2007-01-27 23:30 |只看该作者
许多乱码无法检测, 除非有智能算法

论坛徽章:
0
5 [报告]
发表于 2007-01-28 10:57 |只看该作者
这个问题真的不好解决吗?没有人能给一个算法吗?

论坛徽章:
0
6 [报告]
发表于 2007-01-28 11:08 |只看该作者
--

空格好说,那请问乱码的定义是……

(算法必然基于某种定义)

--

论坛徽章:
0
7 [报告]
发表于 2007-01-28 21:29 |只看该作者
有时候两个乱码加起来就是一个汉字。所以。

论坛徽章:
0
8 [报告]
发表于 2007-01-28 22:32 |只看该作者
如果仅仅是一个姓名字段 乱码的ascii范围已知,用替换就可以了,从网上找了个替换函数

http://www.newbt.net:8022/read.csp?tid=670&fpage=1

#include <iostream>
#include<string>
using namespace std;
std::string str_replace(const std::string s, const std::string old_s, const std::string new_s)
{
     size_t pos = 0;
     std::string r = s;
     while(true)
     {
           pos = r.find(old_s, pos);
           if (pos == std::string::npos) break;

           //c++的replace是与其他语言有所不同的
           //r.replace(pos, pos + old_s.length(), new_s);
           //注意第二个参数是字数
           r.replace(pos, old_s.length(), new_s);
           pos += new_s.length();//查找位置要向下移
     }

     return r;
}
//Posted:clq

void main()
{
        string s1(" 李明#/");
        string s2;
        s2=str_replace(s1," ","");
        s2=str_replace(s2,"#","");
        s2=str_replace(s2,"/","");
        cout<<"s1="<<s1<<endl;
        cout<<"s2="<<s2<<endl;
}
//Posted:clq
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP