今まではずっとSJISを意識せずに使っていたのだが、Googleカレンダーの予定を取得しようとして文字化けに直面した。試行錯誤の結果、以下の2点がわかった。
以下のコードは、実際にGoogleカレンダーの予定を「UTF-8」で取得し、「SJIS」に変換して出力している。
$KCODE = 'UTF-8'
require 'kconv'
require 'gcalapi'
# アカウントメールアドレス
mail = "xxxxxxxx@gmail.com"
# パスワード
pass = "xxxxxxxx"
# Googleカレンダーの「カレンダー設定」画面から取得した非公開URL
srv = GoogleCalendar::Service.new(mail, pass)
cal = GoogleCalendar::Calendar::new(srv, feed)
events = cal.events
events.each do |event|
puts event.title.tosjis
puts event.desc.tosjis
end