電子書籍の厳選無料作品が豊富!

PerlCGIのデコードでつまづいています。jcode.plで$valueの値を「%E3%81%BF%E3%81%AE%E3%82%8A%E5%8F%B0」から「みのり台」の日本語に変換しようとしたのですが「%E3%81%BF%E3%81%AE%E3%82%8A%E5%8F%B0」が返されてうまくいきません。申し訳ありませんが知恵を貸して頂けないでしょうか、よろしくお願い致します。

#!/usr/bin/perl
require './jcode.pl';

#デコードするためのプログラム

# プラウザからのデータ取込み
#if ($ENV{'REQUEST_METHOD'} eq "POST") {
# read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
#}
#else {
$buffer = $ENV{'QUERY_STRING'};
#}

# プラウザからのデータ変換
#$i = 0; #※2
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
#1行毎に$name,$valueを取り出す
($name, $value) = split(/=/, $pair);
# 変換演算子 tr + を スペースに置き換え
# $value =~ tr/+/ /;
# 変換演算子 s/// 単語の構成文字にマッチ
# $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

# " を " に変換
# $value =~ s/"/"/g;
#\n を "" に変換
# $value =~ s/\n//g;

print qq(

  <tr><td>やった</td></tr>
  ) , "\n";


# jcodeでデコードがうまく出来ませんでした。
# 日本語に変換(デコード処理部分)
&jcode'convert(*value,'sjis');
&jcode'convert(*$name,'sjis');
# $FORM{$name} = $value; #※1
# @num[$i]=$value; #※2
# $i=$i++; #※2

# $str = decode('shiftjis', $value);
# $value = encode('shiftjis', $str);

}

@varuee = split(/&*q=/,$ENV{'QUERY_STRING'});

print qq(
  <HTML>
  <HEAD>
  <TITLE>画像の検索結果</TITLE>
  </HEAD>
  <BODY bgcolor="#FFFFFF">

 <H2 align="center">画像データベースの検索結果</H2>

 <!--画像の検索結果を2~3件ためしに表示-->

 <BR>
  <hr>
  <CENTER>
  <table>
);

print qq(

  <tr><td>$value</td></tr>
  ) , "\n";


exit;

A 回答 (1件)

if($ENV{'REQUEST_METHOD'} eq "POST"){


    read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
}
else{
    $buffer=$ENV{'QUERY_STRING'};
}
$i=0;
@buffer=split(/&/,$buffer);
foreach(@buffer){
($name,$value)=split(/=/,$_);
$value=~tr/+/ /;
$value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode::convert(*value,"sjis","","z");
$value=~s/</&lt;/g;
$value=~s/>/&gt;/g;
$value=~s/"/&quot;/g;
$value=~s/(\n|\r)//g;
}
あんまり変わってませんね^^;;;

自分の所は、これで出来てます。
    • good
    • 0
この回答へのお礼

解決できました。ありがとうございます。

お礼日時:2011/03/13 16:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!