iCalendar を Google カレンダーに URL で追加すると文字化けする場合は header を確認する
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 書き換えを行うことが多いので、実際にファイル出力する際はもっとスムーズに行えるかもしれません。
関連記事
- Google Chrome のデベロッパーツールで header を確認するには Network から見る
- PHP で URL のリダイレクト先の URL を取得する方法
- CakePHP 2.0 で Content-Type を変更する方法
- WordPress で Google Analytics のカスタム変数を使って記者毎の成績を算出する方法
- 簡単にグラフを作れる Google Chart Tools を使ってグラフを作成する方法
- WordPress に完璧に Google Analytics のコードを埋め込んでくれるプラグイン
- Google の+1ボタンを簡単に設置する方法
- 1分でできる Google Web Fonts を使って CSS3 の Web Font を使おう
- Google で Google Apps を含めた複数のアカウントを簡単に切り替えられる公式のマルチログインがとても便利です
- robots.txt に Google のクローラーがアクセスした時にエラーが発生して重要なサイトのトップページが Google から削除されました
コメント
コメントは受け付けていません。