免费注册 查看新帖 |

Chinaunix

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

不能打印中文问题 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2016-09-07 19:44 |显示全部楼层
本帖最后由 hztj2005 于 2016-09-07 19:58 编辑

《实战Perl——语言信息处理利器》142页。

论坛徽章:
0
2 [报告]
发表于 2016-09-07 19:57 |显示全部楼层
sunzhiguolu 发表于 2016-09-07 19:50
回复 2# hztj2005
大神 能否提供一个下载链接? 好像没找到啊 先谢了!!!

我看的纸本。
这个书整体不怎么样,不过处理中文,涉及字符集转换这方面,此书有几个可以运行的代码,直接拿来用倒是可以的。

论坛徽章:
0
3 [报告]
发表于 2016-09-17 14:57 |显示全部楼层
本帖最后由 hztj2005 于 2016-09-23 23:58 编辑

我上次说的书,你还是买一本看。我尝终日而思,不如须臾之所学。

你首先要看读入文件究竟是那种编码格式,window下用记事本打开,点击另存为,在对话框最下面,编码下拉框中就可以知道当前究竟编码格式。简体中文系统下,其中的ANSI就是gb2312。另外一种就是utf-8。还有两种你现在不用关心。
如果对少数几个文件转换格式,你选定格式之后保存,就可以了,不用写代码。

要想写代码转换,先看我说的书。因为打字很麻烦,而且我是win10下面用ActivePerl,环境与你不同,交流比较麻烦。

   以下是网上文字:
     这几天工作中用到不少字符集,Unicode、utf-8、GB2312等,但是在windows命令行里敲notepad进入文本编辑页面。保存时需要选择编码方式,但是不存在GB,却有ANSI,于是纳闷,回来一查,才恍然大悟:原来在简体中文系统下,ANSI 编码代表 GB2312 编码。
  为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。
  不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。
  不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。

论坛徽章:
0
4 [报告]
发表于 2016-09-17 22:19 |显示全部楼层
注意下面代码要保存为ANSI格式,就可以运行了。

  1. #!/usr/bin/perl
  2. use Encode;
  3. use warnings;

  4. open (In, "<:encoding(UTF-8)","text.txt");
  5. open (Out,">textgb2312.txt");


  6. while (<In>){
  7.           chomp;
  8.           $Str = encode("gb2312",$_);
  9.        print Out "$Str\n";
  10. }


  11. exit;
复制代码

评分

参与人数 1信誉积分 +10 收起 理由
sunzhiguolu + 10 很受启发, 谢谢大神指点!

查看全部评分

论坛徽章:
0
5 [报告]
发表于 2016-09-20 16:22 |显示全部楼层
sunzhiguolu 发表于 2016-09-18 11:13
回复 17# hztj2005
非常感谢您的帮助, 非常有用! 我将先前的代码改写了下, 代码如下:
perl test.pl text ...
  1. <p>#use strict;
  2. binmode($ARGV[0], ":encoding(UTF-8)");
  3. binmode($ARGV[1], ":encoding(gb2312)");
  4. while (<>) {
  5. chomp;
  6. print $_."\n";
  7. }

  8. exit;</p><p>
  9. </p><p>这样可以运行。你的代码出错,也许是binmode对STDIN适用性不好。</p>
复制代码

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP