アプリ版:「スタンプのみでお礼する」機能のリリースについて

%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A

これを

あいうえお

に変換するには、どのようにデコードすればいいのでしょうか?
ご教授お願いします。m(_ _)m

[現在のソース]
$buffer = $ENV{'QUERY_STRING'};
@pairs = split(/&/,$buffer);
foreach $pair (@pairs){
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
my $value = Jcode::convert($value, 'utf8');
$FORM{$name} = $value;
}

「縺ゅ>縺・∴縺・」が検出されます。

A 回答 (4件)

encode.pm を利用します。



encode.pm と言うモジュールがあります。これを利用すると変換することができます。

http://digit.que.ne.jp/work/index.cgi?Encode

に具体的な使い方が掲載されています。参考になると思います。
    • good
    • 0

#1 です。



デコード部分だけですが。参考にしてください。

use Encode;

$data = "%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A";

$data = encode("sjis", decode("utf8", penc2bin($data)));

print $data;

exit(0);

sub penc2bin {
my($d) = @_;
my($i, $r);

for ($i = 0; $i <= length($d)-1; $i+=3) {
$r .= pack("C", hex(substr($d, $i+1, 2)));
}
($r);
}
    • good
    • 0

#1 です。

初期化を忘れました(^^;)

use Encode;

$data = "%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A";

$data = encode("sjis", decode("utf8", penc2bin($data)));

print $data;

exit(0);

sub penc2bin {
my($d) = @_;
my($i, $r);

$r = '';
for ($i = 0; $i <= length($d)-1; $i+=3) {
$r .= pack("C", hex(substr($d, $i+1, 2)));
}
($r);
}
    • good
    • 0
この回答へのお礼

Perlのバージョンが少し古くて(5.6.1)、Encode.pm(5.7.3以上)がインストールできませんでした。(;-;)
しかし勉強になりました。
ありがとうございました。

お礼日時:2004/06/17 09:00

my $value = Jcode::convert($value, 'utf8');


の、Jcodeの使い方が違いますね。
("my"はいらないような気がする)

Jcode::convert($str, [$ocode, $icode, $opt]);
ですから、
eucに変換したければ

$value = Jcode::convert($value, 'euc', 'utf8');
です。

参考URL:http://openlab.ring.gr.jp/Jcode/Jcode.html
    • good
    • 0
この回答へのお礼

ビンゴです。
ありがとうございました。m(_ _)m

お礼日時:2004/06/17 08:58

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