免费注册 查看新帖 |

Chinaunix

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

求助:使用Perl怎样将一个显式的中文字符串写入一个文件中呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-04 20:28 |只看该作者 |倒序浏览
如题,不知道是否有一些简单的方法来满足上述要求,谢谢大家帮忙!

#main.pl

$str = "管理系统";

unlink($str)
printData($str);

sub printData()
{
    my (@argv) = @_;
    if (-e "result.txt" ) {
        open(RESULT, ">>result.txt" );
    }
    else {
        open(RESULT, ">result.txt" );
    }
    print(RESULT "$argv[0]" );
    close(RESULT);
}

论坛徽章:
0
2 [报告]
发表于 2006-07-04 20:37 |只看该作者
system('echo "管理系统" >>result.txt');

论坛徽章:
0
3 [报告]
发表于 2006-07-04 21:13 |只看该作者
谢谢hezhiroy的回复,我按上面的说法去做,将上面的问题解决了。

但带来了新的问题,原来的正确的内容又不正确了,     我在实际使用过程中比上面的情况更复杂一些:
     1) 从一个文件里读取数据,这些数据里有中文也有英文;
     2) 读取的部分数据会调用printData写入result.txt;

   之前这些操作都是正确的,但将一个显式字符串直接传入时结果就会出现乱码。
   使用hezhiroy的方法的结果是后面的正确,但之前的操作结果全都成乱码了,还请大家指点迷津!

论坛徽章:
0
4 [报告]
发表于 2006-07-05 11:27 |只看该作者
问题解决了,是文件字符集编码导致的。
1) 从一个源文件里读取数据,这些数据里有中文也有英文;
2) 读取的部分数据会调用printData写入result.txt;

执行这些操作时,因源文件的采用的是UTF-8字符集编码,导致生成的目标文件也会按UTF-8字符集进行编码。
中间显式将一个中文字符串往目标文件里写入perl可能是按gb2312字符集编码的形式操作的。

所以我目前的解决办法是先将采用UTF-8字符集编码的源文件使用iconv.exe工具进行编码格式的转换。
iconv.exe -f UTF-8 -t gb2312 src.txt dst.exe   之后的操作就正常了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP