Encode::JP::Mobileを使う

携帯の絵文字がウザーなので
文字化けないようにする方法をためしてる。

Sledge::Charsetの部分で。


use Encode;
use Encode::JP::Mobile;
use Carp;

sub convert_param {
my $self = shift;
my $page = shift;

my $agent_code;
if ( $page->mobile->agent->is_docomo ) {
$agent_code = 'shift_jis-imode';
} elsif ( $page->mobile->agent->is_ezweb ) {
$agent_code = 'shift_jis-kddi';
} elsif ( $page->mobile->agent->is_vodafone ) {
$agent_code = 'shift_jis-vodafone';
} elsif ( $page->mobile->agent->is_airh_phone ) {
$agent_code = 'shift_jis-airedge';
} else {
croak "non mobile";
}

for my $p ($page->r->param) {
my @v = (
map { Encode::encode('euc-jp',$_) }
map { Encode::decode($agent_code,$_) }
$page->r->param($p)
);
$page->r->param($p => \@v);
}
return;
}

こんなんかなぁ。

参考:http://blog.bulknews.net/mt/archives/001742.html

(追記)

ちなみにこれはモバイル用のCharsetなのでelseがcroakしても問題ない予定。

(追記2)

さらに、このフィルタリングの場合、&#*****;の形式にはならない感じ。
なので、Sledge::MobileGateの方にはFIXしないと、おもわれ。
対応表を作るの面倒だしなぁ。
FIXして他のプロジェクトに影響がでるのもイヤンな感じだし。

参考:http://diary.godtomato.net/takefumi/2003/12/10.html