- 论坛徽章:
- 0
|
算了 好人做到底。
下面的CGI可以帮你学习,你从你的HTML那边传递参数过来CGI这边,这个参数的中文编码是和你浏览器选择的编码有关。- #!/usr/bin/perl -w
- use CGI;
- use HTML::Entities;
- use utf8;
- use Encode;
- $query = new CGI;
- $secretword = $query->param('word');
- $remotehost = $query->remote_host();
- my $a = $secretword;
- $a = decode_entities($a);
- print $query->header( -charset=>'utf-8' );
- print $a."-------------";
- print unpack("H*",$a)."<br>";
- print decode("gb2312",$a)."-------------";
- print unpack("H*",decode("gb2312",$a))."<br>";
- print encode("utf-8",decode("gb2312",$a))."-------------";
- print unpack("U*",encode("utf-8",decode("gb2312",$a)))."<br>";
- map {print "&#x",sprintf("%x",$_)}unpack ("U*",decode ("gb2312",$a));
复制代码 输入一个‘山’,如果CGI显示:
?-------------c9bd
山-------------e5b1b1
山-------------229
山
表示你的浏览器目前使用的编码是GB2312
如果是:
山-------------e5b1b1
灞-------------e7819e
灞-------------231
灞
这个则你HTML传过来的是UTF-8
那么可以用这个代码:- #!/usr/bin/perl -w
- use CGI;
- use HTML::Entities;
- use utf8;
- use Encode;
- $query = new CGI;
- $secretword = $query->param('word');
- $remotehost = $query->remote_host();
- my $a = $secretword;
- $a = decode_entities($a);
- print $query->header( -charset=>'utf-8' );
- print $a."-------------";
- print unpack("H*",$a)."<br>";
- print decode("utf-8",$a)."-------------";
- print unpack("H*",decode("utf-8",$a))."<br>";
- print encode("gb2312",decode("utf-8",$a))."-------------";
- print unpack("H*",encode("gb2312",decode("utf-8",$a)))."<br>";
- map {print "&#x",sprintf("%x",$_)}unpack ("U*",decode ("utf-8",$a));
复制代码 将显示:
山-------------e5b1b1
山-------------e5b1b1
?-------------c9bd
山 |
|