携帯用(UTF-8) Amazon Web サービスを作った際のメモ、パーツなど

携帯サイトを作っていて、色々困ったので、そのメモ。


■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(0)

TrackBack URL for this entry:
http://www.qunea.com/mt/mt-tb.cgi/1714

Post a comment











画像の中に見える文字を入力してください。