加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl 转码操作将utf8格式转换为gb2312

发布时间:2020-12-15 23:52:25 所属栏目:大数据 来源:网络整理
导读:#!/bin/perl -w? use Encode; my($zxc,$zxl) = @ARGV; open(fzxc,"$zxc") or die "cann't open $zxcn"; ?while($line = fzxc) ? ? { chomp($line); $str=decode("UTF-8",$line); $line=encode("GB2312",$str); print "line is $linen"; ? } Perl从5.6开始

#!/bin/perl -w?

use Encode;

my($zxc,$zxl) = @ARGV;


open(fzxc,"<$zxc") or die "cann't open $zxcn";

?while($line = <fzxc>)
? ? {
chomp($line);
$str=decode("UTF-8",$line);
$line=encode("GB2312",$str);
print "line is $linen";

? }

Perl从5.6开始已经开始在内部使用utf8编码来表示字符,

如果想要Perl按照我们的字符概念来对待文本,文本数据就需要一直用Perl字符串的形式存放。但是我们平时写出的每个字符一般都被作为纯ASCII字符保存(包括在程序中明文写出的字符串),也就是字节流的形式,这里就需要encode和decode函数的帮助了。

因为字符串是用明文写出的,存放的时候已经是字节流形式,丧失了本来的意义,所以首先就要用decode函数将其转换为Perl字符串,由于汉字一般都用gb2312格式编码,这里decode也要使用gb2312编码格式。转换完成后Perl对待字符的行为就和我们一样了,平时对字符串进行操作的函数基本上都能正确对字符进行处理,除了那些本来就把字符串当成一堆字节的函数(如vec、pack、unpack等)。于是split就能把字符串切成单个字符了。最后由于在输出的时候不能直接使用utf8编码的字符串,还需要将切割后的字符用encode函数编码为gb2312格式的字节流,再用print输出

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读