Google Calendarがまた日本語iCalendar非対応に?
追記2009-10-17:「図書館の返却期限を取得し Plagger で iCal フォーマットに変換」によると、HTTPレスポンスのcharsetを指定するといいようです(未検証)。
昔、PlaggerでiCalendarデータを作ってGoogleに読ませようとすると、UTF-8の日本語が文字化けしていた。で、Filter::NCRっていう野良プラグインを作って数値文字参照形式に変換していた。その後、変換しなくてもUTF-8の日本語が通るようになったのだけど。
が、ふとGoogle Calendarを見たら、また化けるようになっていた。一時的なものかはわからないけど、再びFilter::NCRを設定してみた。
調べると、前のときにFilter::NCRを公開してなかったので、コピペプロダクトだけど貼ってみる。
しかし、仕様が予告もなく変わって、ソースコードも確認できないオンラインサービスは、文房具としては常用しづらいなぁ。使ってるからこそそう思ったんだけど。
package Plagger::Plugin::Filter::NCR;
use strict;
use warnings;
use base qw( Plagger::Plugin::Filter::Base );
sub register {
my($self, $context) = @_;
$context->register_hook(
$self,
'update.entry.fixup' => \amp;update,
);
}
sub update {
my($self, $context, $args) = @_;
my $body = $args->{entry}->body;
my $title = $args->{entry}->title;
$title = ncr_filter($title);
$body = ncr_filter($body);
$args->{entry}->title($title);
$args->{entry}->body($body);
}
sub ncr_filter {
my $text = shift;
# this line is copied from http://as-is.net/blog/archives/001121.html
$text =~ s/(\P{ASCII})/sprintf("amp;#%d;", ord($1))/eg;
$text;
}
1;
コメント
コメントの投稿
トラックバック
http://emasaka.blog65.fc2.com/tb.php/328-97008cff
