免费注册 查看新帖 |

Chinaunix

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

如何把一个txt文档中的所有全角字符转换成半角??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-01 09:32 |只看该作者 |倒序浏览
内容是中文加数字、字母、标点!
我试着转换了一下,部分会出现乱码!不知道什么原因!
如转换前:
番禺西环路约4000?营业中酒楼带豪华装修有大型停车场,水电、消防、证照齐,可分租。电13016082297
转换后:
番禺西环路约4000?营业中酒楼带豪华装修有大型?党。??纭⑾?馈⒅ふ掌耄?煞肿狻5?3016082297

我只是用一个函数转换了一下数字
sub ReplaceNumber{
        my($adstr)=@_;
        $adstr=~s/0/0/g;
        $adstr=~s/1/1/g;
        $adstr=~s/2/2/g;
        $adstr=~s/3/3/g;
        $adstr=~s/4/4/g;
        $adstr=~s/5/5/g;
        $adstr=~s/6/6/g;
        $adstr=~s/7/7/g;
        $adstr=~s/8/8/g;
        $adstr=~s/9/9/g;
        return $adstr;
}
这是什么问题,高手指点一下!

论坛徽章:
0
2 [报告]
发表于 2007-03-01 16:53 |只看该作者

???????????

高手们都去哪儿了?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2007-03-01 16:59 |只看该作者
在程序开头加上:
  1. use encoding 'gbk';
复制代码


如果这么做会影像程序的其它部分的正常运行的话,那就先 decode 成 utf8,然后再替换,替换后再 encode 成 gbk

论坛徽章:
0
4 [报告]
发表于 2007-03-03 11:03 |只看该作者
不行啊!加上use encoding 'gbk';根本不替换!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2007-03-03 11:04 |只看该作者
原帖由 hcduguo 于 2007-3-3 11:03 发表
不行啊!加上use encoding 'gbk';根本不替换!

那就是人品问题了。
我这里是可以的。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2007-03-03 11:56 |只看该作者
我这也可以

论坛徽章:
0
7 [报告]
发表于 2007-03-05 09:49 |只看该作者

那位帮我执行以下这段代码,我的的确不进行替换!

#!/usr/bin/perl
use encoding 'gbk';

open fh,"ae.txt";
while (<fh>) {
        my $line=ReplaceNumber($_);
        print "$line\n";
}
close(fh);
sub ReplaceNumber{
        my($adstr)=@_;
        $adstr=~s/0/0/g;
        $adstr=~s/1/1/g;
        $adstr=~s/2/2/g;
        $adstr=~s/3/3/g;
        $adstr=~s/4/4/g;
        $adstr=~s/5/5/g;
        $adstr=~s/6/6/g;
        $adstr=~s/7/7/g;
        $adstr=~s/8/8/g;
        $adstr=~s/9/9/g;
        return $adstr;
}

ae.txt
番禺西环路约4000?营业中酒楼带豪华装修有大型停车场,水电、消防、证照齐,可分租。电13016082297

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2007-03-05 09:55 |只看该作者
原帖由 hcduguo 于 2007-3-5 09:49 发表
#!/usr/bin/perl
use encoding 'gbk';

open fh,"ae.txt";
while (<fh>) {
        my $line=ReplaceNumber($_);
        print "$line\n";
}
close(fh);
sub ReplaceNumber{
        my($adstr)= ...

binmode fh, ":encoding(gbk)";
楼主有空看看这个吧:
http://svn.perlchina.org/trunk/P ... /CN/perlopentut.pod
还有《提问的智慧》

论坛徽章:
0
9 [报告]
发表于 2007-03-05 10:06 |只看该作者

回复 8楼 flw 的帖子

你太有才了!多谢指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP