Google カレンダーに独自で作成した iCal 形式のファイルを URL から追加すると文字化けする場合は header で下記のように Content-Type や文字コードを設定すると良いです。
1 | header('Content-Type: text/calendar; charset=utf-8'); |
乱暴な書き方ではありますが、下記のように PHP ファイルとして作成して試してみれば読み込むことができることが分かります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php header('Content-Type: text/calendar; charset=utf-8'); ?> BEGIN:VCALENDAR METHOD:PUBLISH VERSION:2.0 PRODID:-//Animemap//animemap.net//EN CALSCALE:GREGORIAN BEGIN:VTIMEZONE TZID:Japan BEGIN:STANDARD DTSTART:19390101T000000 TZOFFSETFROM:+0900 TZOFFSETTO:+0900 TZNAME:JST END:STANDARD END:VTIMEZONE BEGIN:VEVENT UID: DTSTAMP:20120114T001239Z SUMMARY:テスト DESCRIPTION: DTSTART;VALUE=DATE:20120601 DTEND;VALUE=DATE:20120601 RRULE:FREQ=WEEKLY;INTERVAL=1;COUNT=4 TRANSP:OPAQUE END:VEVENT END:VCALENDAR |
.ics という拡張子ではないのに読み込むことが可能なのかについてですが、Content-Type を設定しているので問題ありません。これについては下記ページからの説明を引用させて頂きます。
インターネットでファイルのダウンロードを行う時等、ファイルに拡張子がなかったり、拡張子からファイルの種類が分からない場合がある。 その場合、「これから返すファイルの種類」をContent-Typeによって示すことで、ファイルの種類を受け取る側が知ることができる。またその種類に応じて、Webブラウザがそのまま表示したり、ファイルとして保存したり、他のアプリケーションを起動してそれを用いて出力したり、と処理を変更する。
下記の記事はセキュリティに問題がありますが、同じようなことをやっている記事です。文字化けの解決にはこちらを参考にさせて頂きました。
最近では URL 書き換えを行うことが多いので、実際にファイル出力する際はもっとスムーズに行えるかもしれません。
コメント