关于将汉字转换成url编码的问题[已解决]

关于将汉字转换成url编码的问题[已解决]

比如将:http://a.com/a.php?a=北京
转换成 http://a.com/a.php?a=%B1%B1%BE%A9

用perl将 "北京"的ascii码 转换成16进制的"B1B1BEA9",再转换成url识别的格式"%B1%B1%BE%A9"

google了半天没找到想要的方法,请各位朋友给个思路,谢谢!

使用6楼hitsubunnu 的方法,已成功解决,谢谢大家!

[Copy to clipboard] [ - ]
CODE:
use Encode qw(from_to);
$string="北京";
from_to($string, "Shift_JIS", "GB2312");    #需要你自己根据编码 改一下  我的是日文系统
$string=~s/(\W)/sprintf("%%%02X",unpack("C",$1))/eg;
print ...

percent encoding or url encoding
http://en.wikipedia.org/wiki/Percent-encoding
也许要代理
use URI::Escape
这是perl版  不是php  你要是问cgi的我知道 php的不知道

$str =~ s/(\W)/'%'.unpack("H2", $1)/ego;



QUOTE:
原帖由 hitsubunnu 于 2008-3-11 23:22 发表
这是perl版  不是php  你要是问cgi的我知道 php的不知道

$str =~ s/(\W)/'%'.unpack("H2", $1)/ego;

谢谢楼上的,但还是没有得到我想要的结果,其实就是将汉字的字符串转换成16进制,再将16进制字符串改为url识别的格式.

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
#
my $str = "北京";
$str =~ s/(\W)/'%'.unpack("H2",$1)/ego;
print $str,"\n";

结果是:%e5%8c%97%e4%ba%ac


[Copy to clipboard] [ - ]
CODE:
use Encode qw(from_to);

$string="北京";
from_to($string, "Shift_JIS", "GB2312");    #需要你自己根据编码 改一下  我的是日文系统
$string=~s/(\W)/sprintf("%%%02X",unpack("C",$1))/eg;

print $string;



QUOTE:
原帖由 hitsubunnu 于 2008-3-12 10:59 发表

use Encode qw(from_to);

$string="北京";
from_to($string, "Shift_JIS", "GB2312");    #需要你自己根据编码 改一下  我的是日文系统
$string=~s/(\W)/sprintf("%%%02X",unpack("C",$1))/eg;

print ...

谢谢哥们!

问题解决了!

多谢各位热心的perler!