免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2932 | 回复: 11

还是关于中文字符的问题 [复制链接]

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-01-02 17:05 |显示全部楼层
测试环境 Win7 x64, IDE gvim 代码如下:
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Encode qw /encode decode/;
  5. use utf8;

  6. while (<DATA>){
  7.         s/\s*\z//;
  8.         local $_ = decode ('utf8', $_);
  9.         next if (/[^\x{4E00}-\x{9FA5}]/ or length !=6);
  10.         print encode ('gb2312', $_);
  11. }

  12. __DATA__
  13. www某h某公司
  14. www某4某某某公司.
  15. ww某某r5[\';某*某公司/
  16. www某某'某公司
  17. www某-5r4645'\[;]某某某公司
  18. www某某某;'\';[56某公司某某
  19. www某某某rtr'\某公司某某*
  20. www某某.'\';\][\'某\某公司某某
  21. www某^某24'.某某公司某某
  22. www某某@某;/][[/]][=][/;;==[].某公司某某
  23. www某,某,某,某+*'/gf6公ytu'司某某
  24. www某,某某;某公/'[/ytr4.>司某某
  25. .,.\.\..fdwww某某某/.5.f某公司某某
  26. www某某某某公[],.\4/][][\\..,\'wre司某某
  27. www某某某某公司某某'
  28. 某某某某公司某某
  29. 某某某某公司
  30. 公司某某某某
  31. 公司某某某
  32. 公司某某
  33. 公司某
  34. 某某某公司
  35. 某某某某某公司
  36. 某某某某某某公司
  37. 某公司
复制代码


论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-01-02 17:09 |显示全部楼层
执行脚本 显示如下提示:
utf8 "\xB9" does not map to Unicode at *.pl line 7, <DATA> line 1.
Cannot decode string with wide characters at C:/Perl64/lib/Encode.pm line 200, <DATA> line 1

以参数的方式读取文件就没问题, 这样就不行,为啥呀?

论坛徽章:
12
射手座
日期:2014-10-02 11:31:29程序设计版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-27 06:20:00程序设计版块每日发帖之星
日期:2016-05-27 06:20:00程序设计版块每日发帖之星
日期:2016-05-25 06:20:00每日论坛发贴之星
日期:2016-05-24 06:20:00程序设计版块每日发帖之星
日期:2016-05-24 06:20:0015-16赛季CBA联赛之深圳
日期:2016-05-23 15:33:59程序设计版块每日发帖之星
日期:2016-05-20 06:20:00程序设计版块每日发帖之星
日期:2016-04-26 06:20:00神斗士
日期:2015-12-03 09:27:3215-16赛季CBA联赛之八一
日期:2016-12-29 09:56:05
发表于 2017-01-03 08:07 |显示全部楼层
搞糊涂了,请问大圣你想要什么
哈哈,语文没学好,我的理解能力较弱,
能否将你预期的结果贴出来看下

  • 输入
  • 程序? 你想要什么? 如何?
  • 输出?

论坛徽章:
12
射手座
日期:2014-10-02 11:31:29程序设计版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-27 06:20:00程序设计版块每日发帖之星
日期:2016-05-27 06:20:00程序设计版块每日发帖之星
日期:2016-05-25 06:20:00每日论坛发贴之星
日期:2016-05-24 06:20:00程序设计版块每日发帖之星
日期:2016-05-24 06:20:0015-16赛季CBA联赛之深圳
日期:2016-05-23 15:33:59程序设计版块每日发帖之星
日期:2016-05-20 06:20:00程序设计版块每日发帖之星
日期:2016-04-26 06:20:00神斗士
日期:2015-12-03 09:27:3215-16赛季CBA联赛之八一
日期:2016-12-29 09:56:05
发表于 2017-01-03 08:19 |显示全部楼层
大圣
比尔盖兹不会告诉你的成功秘诀

学习如何提问才能得到帮助。更容易得到答案

论坛徽章:
12
射手座
日期:2014-10-02 11:31:29程序设计版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-27 06:20:00程序设计版块每日发帖之星
日期:2016-05-27 06:20:00程序设计版块每日发帖之星
日期:2016-05-25 06:20:00每日论坛发贴之星
日期:2016-05-24 06:20:00程序设计版块每日发帖之星
日期:2016-05-24 06:20:0015-16赛季CBA联赛之深圳
日期:2016-05-23 15:33:59程序设计版块每日发帖之星
日期:2016-05-20 06:20:00程序设计版块每日发帖之星
日期:2016-04-26 06:20:00神斗士
日期:2015-12-03 09:27:3215-16赛季CBA联赛之八一
日期:2016-12-29 09:56:05
发表于 2017-01-03 08:46 |显示全部楼层
我有一本专家写的学会提问实战手册,这一本基础入门版,对初学者很实用,
有需要发给你

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-01-03 09:12 |显示全部楼层
回复 3# patagonia2
非常感谢大神多次出手相助,我的确在如何提问这里需要加强学习。如果您方便的话 将 《如何提问》 的手册给我发一本 谢谢。

这个问题 源自 Shell 板块,打印每条记录中只包含汉子的记录并且汉子字数正好是六个
Q: 程序的输入
A: 文件本身 __DATA__ 下面的内容作为程序的输入

Q: 执行过程
A: 删除每条记录末尾的空白字符 (包括回车,换行符); 如果记录中包含能够被 [^\x{4E00}-\x{9FA5}] 匹配 或 长度不是 6 则执行读入下一条记录; 将该条记录的编码转换为 gb2312 编码后打印输出

Q: 输出
A:
-----------------------------
某某某某公司
公司某某某某
-----------------------------



论坛徽章:
0
发表于 2017-01-03 11:33 |显示全部楼层
1. 如果你写use utf8,你的perl文件编码应该是utf8,__data__后的数据能自行识别为正确的utf8。注释掉#local $_ = decode ('utf8', $_);。

2. 或者perl文件为gbk的,注释掉#use utf8; 将local $_ = decode ('utf8', $_);改为local $_ = decode ('gbk', $_);,让系统能将gbk转为utf8.

论坛徽章:
0
发表于 2017-01-03 11:34 |显示全部楼层
1. 如果你写use utf8,你的perl文件编码应该是utf8,__data__后的数据能自行识别为正确的utf8。注释掉#local $_ = decode ('utf8', $_);。

2. 或者perl文件为gbk的,注释掉#use utf8; 将local $_ = decode ('utf8', $_);改为local $_ = decode ('gbk', $_);,让系统能将gbk转为utf8.

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-01-03 11:41 |显示全部楼层
回复 7# fcl21721
1. 如果你写use utf8,你的perl文件编码应该是utf8,__data__后的数据能自行识别为正确的utf8。注释掉#local $_ = decode ('utf8', $_);

2. 或者perl文件为gbk的,注释掉#use utf8; 将local $_ = decode ('utf8', $_);改为local $_ = decode ('gbk', $_);,让系统能将gbk转为utf8.
是啊,我的 perl 文件本身的确是 utf8 编码。我注释了 local $_ = decode ('utf8', $_); 这一行代码程序的结果依然不对,还望您给出一个合理的解释。再次感谢。。。


论坛徽章:
0
发表于 2017-01-03 14:02 |显示全部楼层
回复 9# sunzhiguolu

#!/usr/bin/perl
use strict;
use warnings;
use Encode qw /encode decode/;
use utf8;

while (<DATA>{
        s/\s*\z//;
        #local $_ = decode ('gbk', $_);
        next if (/[^\x{4E00}-\x{9FA5}]/ or length !=6);
        print encode ('gb2312', $_), "\n";
}
#结果
#某某某某公司
#公司某某某某
如果代码和上面一模一样。你可以用notepad++看看编码格式。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP