Google カレンダーでiCal形式を読み込むと文字化け
Googleカレンダーにical形式(*.ics)のファイルを別カレンダーとして登録したときに文字化けしていた原因が分かりました。
Googleカレンダーではレスポンスのヘッダーに文字コードを指定しないと駄目らしい。ここのブログで教えてもらった。
icalが置いてあるディレクトリの.htaccessに
addtype text/calendar; charset=utf-8
を記述してみたりしたけど駄目だったので、PHPでさくっと作りました。
<?php
header('Content-Type: text/calendar; charset=utf-8');
$sFile = $_GET['ical'];
readfile($sFile);
?>
このファイルをical.phpとすると
http://www.hoge.com/ical.php?ical=suganuma.ics
というアドレスをGoogleカレンダーに設定すると、文字化けせずicalファイルを読み込んでくれます。
Googleカレンダーは携帯でもみれるので、これで会社のスケジュールをいつでも携帯から閲覧可能に。ちなみにGoogleカレンダーの携帯用アドレスは
http://www.google.com/calendar/m
<2008/09/16 追記>
コメントで指摘がありましたが、上のコードはあまりにセキュリティがダメダメなので各自'ics'ファイルに限定するとか、やってください。
<2009/08/28 追記>
一応備忘録のために修正版をアップ。
<?php $sFileName = $_GET['ical']; if (strpos($sFileName, '.ics') === false) { $sFileName .= '.ics'; } if (file_exists($sFileName)) { header('Content-Type: text/calendar; charset=utf-8'); readfile($sFileName); }