perl
Amazon, 携帯
2008-04-23 15:11
携帯サイトを作っていて、色々困ったので、そのメモ。
■CPANで使うもの
use strict;
use Encode;
use CGI;
use LWP::Simple;
use XML::Simple;
use Unicode::RecursiveDowngrade;
最後の「Unicode::RecursiveDowngrade」はXMLデータのUTF-8 フラグを一括で落とす(バグはあるようだが、スルー)。これでファイル内はUTF-8に統一され、encodeとかdecode無しで便利。僕の環境はインストールできない環境だったの、ファイルと同じ階層にダウンロードしたのを置いただけ。
▼設置例
/Unicode/RecursiveDowngrade.pm
hoguhogu.cgi
my $url="http://webservices.amazon.co.jp・・・";
my $data_from_web = LWP::Simple::get($url) or die "cannot get content from $url";
my $parser = XML::Simple->new;
my $data = $parser->XMLin($data_from_web);
# フラグ落とし
my $rd = Unicode::RecursiveDowngrade->new;
$data = $rd->downgrade($data); # unflagged UTF-8
▼Unicode::RecursiveDowngrade(作者のページ)
UTF-8 フラグと戦う人へ
http://blog.livedoor.jp/nipotan/archives/50228106.html
■auだけフォームでShift_JISを送ってくる。
ファイルがUTF-8であってでもだ。なのでauの場合だけ、Formの内容をUTF-8に変換する。
my $HTTP_USER_AGENT = $ENV{'HTTP_USER_AGENT'};
if($HTTP_USER_AGENT =~ /UP.Browser/){ Encode::from_to($FormKEY, 'shiftjis', 'utf8');}
■Amazonの携帯ページに送る、カートに入れる
# 詳細
http://www.amazon.co.jp/gp/aw/rd.html?uid=NULLGWDOCOMO&at=ASSOCIATE_TAG&a=ASIN&dl=1&url=%2Fgp%2Faw%2Fd.html
# cart
http://www.amazon.co.jp/gp/aw/rd.html?uid=NULLGWDOCOMO&at=ASSOCIATE_TAG&a=ASIN&o=Add&dl=1&url=%2Fgp%2Faw%2Fc.html
■URLをencode
#urlエンコード
sub urlencode {
my($str) = @_;
$str =~ s/(\W)/sprintf("%%%02X", ord($1))/eg;
$str =~ tr/ /+/;
return($str);
}
▼こっちだと、ひらがなの「み」が「?」になってしまう。なぜ?!
$str =~ s/([^¥w])/'%'.unpack("H2", $1)/ego;
こんなもん?でもって、作ったサイトはこんなん。
パッケージ見蔵(携帯サイト)
http://www.qunea.com/m/aws/
see also
携帯サイト作成目安 http://www.qunea.com/blog/log/20080422-1515.html
このブログは引越ししました→クネアシ
TrackBack URL for this entry:
http://www.qunea.com/mt/mt-tb.cgi/1714
Post a comment