+ -
当前位置:首页 → 问答吧 → perl 中文处理

perl 中文处理

时间:2011-09-22

来源:互联网

我想从文件里读取汉字,然后一个字一行的写进去。
但是实行结果是乱码?不知道哪里错了,请大家执教,摆脱了

代码如下
#!/usr/bin/perl

use utf8;

use Encode; 


open (FILE, "test.txt");

 open (FILE1, ">out.txt");

while ($_= <FILE>) {

chop;

$str=decode("gb2312",$_);

$len = length($str);

for ($i = 0; $i < $len; $i++) {

  $c = substr($str, $i, 1);

  print FILE1 encode("gb2312",$c),"\n";



}



}



close (FILE);

close (FILE1);

作者: taijun918   发布时间: 2011-09-22

该回复于2011-09-22 10:19:49被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • iambic
  • 等 级:
  • 13

    7

    9

#2楼 得分:0回复于:2011-09-22 08:15:48
文件本来的编码是什么?写出去之后的字节内容是什么?是真的乱码还只是你的打开方式有问题?这些问题搞清楚了吗?

作者: stain_less   发布时间: 2011-09-22

看我的博客 perl的书籍多着呢 http://blog.csdn.net/willpython

作者: iambic   发布时间: 2011-09-22

gb码应该是两个字节一个字,不是一个字节,你再试试
另外你原始文件中是什么编码啊?

作者: willpython   发布时间: 2011-09-22

用以下代码测试也是乱麻,不从文件读入,写进去的也是这样。请大家帮帮忙
结果为

?

?
?
?
?
?
?
?
代码
#!/usr/bin/perl

use Encode;
use Encode::CN; 
open(IN,">out2.txt");
$dat="测试文本";
$str=decode("gb2312",$dat);
@chars=split //,$str;
foreach $char (@chars) {
  print IN encode("gb2312",$char),"\n";
}

作者: jiuchang   发布时间: 2011-09-22

热门下载

更多