Archive for 十二月, 2008

perl处理UTF-8编码,对URL地址进行编码

0

首先进行声明
use Encode;
gbk转uft-8:
$line = encode(“utf-8″,decode(“gbk”,$line));

$line = encode_utf8(decode(“gbk”,$line));
utf-8转gbk:
$line = encode(“gbk”, decode(“utf8″, $line));
uft-8转gb2312:
$line = encode(“gb2312″, decode(“utf8″, $line));

测试可用!by:Neeao


perl中对URL地址进行编码

URL中如果有中文的字符,要先对其进行编码才能进行下一步的处理。

* 用替换方法进行编码:

Url encode:对 n 不转码
perl -pe ‘s/([^w-.@])/$1 eq “n” ? “n”:sprintf(“%%%2.2x”,ord($1))/eg’ keywords.list

* 用替换方法进行解码:

Url Decode:
perl -pe ‘s/%(..)/pack(“c”, hex($1))/eg’ keywords.list

* 用URI::URL模块进行编码

use URI::URL;
my $str = “http://www.google.com/lxmxn’s blog&b=Hello,perl”;
my $url = URI::URL->new( $str );
print $url;

* 用URI::Escape模块进行编码

use URI::Escape;
my $str=’北极神话’;
print uri_escape($str);

#result:%B1%B1%BC%AB%C9%F1%BB%B0

Linux系统下处理从GB2312到UTF-8的转换

0

UTF-8 这种编码已经是大势所趋,但是还有不少中文的文档保留着老式的 GB2312编码,而且只要你要和 Windows 打交道,就免不了要处理 GB2312 的问题,比如处理从 Windows 下拷过来的程序源代码、文本文件、字母文件之类。

编码转换的方法估计大多数同学都知道了,不过还是有必要再强调一下,我就是老忘。

Linux 下的 iconv 命令可以来处理字符编码的转换,基本命令格式如下:

iconv -f 原始编码 -t 目标编码 文件名 > 新文件名

-f 代表 from,-t 代表 to。

假设我要把 text.txt 从 GB2312 编码转换成 UTF-8,并且保存为 text-utf-8.txt 的话,那么命令如下:

iconv -f GB2312 -t utf-8 text.txt > text-utf-8.txt

不过有的时候,转换会报错,很可能的原因是原文件中有些字符超过了 GB2312 的范围,那么,这个时候,我们可以把 GB2312 改成它的超集 GB18030,一般就解决问题了:

iconv -f gb18030 -t utf-8 text.txt > text-utf-8.txt

Go to Top