ramazeで文字コードをShift JISにするには
<2008/9/23追記>
このエントリには、続きがあります。
ramazeで文字コードをShift JISにするには(続き) - NAT’s Programming Champloo
<追記終わり>
GoogleスプレッドシートをWebスクレイピングしてみた - NAT’s Programming Champloo
↑の続き。
一部の携帯端末で文字化けするとのコメントがあったので、対策することにした。
少しネット上でも検索してみたが、携帯向けコンテンツでは、文字コードはShift JISにした方がどの端末でも対応できるようなので、HTMLの方をShift JISに変えることにした。
とりあえず、require 'kconv'して、layoutメソッドでまとめて文字コード変換してみた。
def layout %{ <?xml version="1.0" encoding="Shift_JIS"?> <html> <head> <title>駅名しりとり 駅名一覧</title> </head> <body> <h1>全国駅名しりとりラリー 携帯用駅名一覧</h1> <%= @content.tosjis %> </body> </html> }.tosjis end
@contentとテンプレートの2つに対して tosjisメソッドを呼んでいる。
本当は、文字コード変換する場所を1箇所にするために、テンプレートを実行した後にまとめて文字コード変換したかったのだけど、やり方が分からない。こういう事後処理っぽい事を書くのに良い方法は、ramazeでは用意していないのかな。今度少し調べてみるか。
layoutメソッドの変更以外にも、HTTPヘッダのContent-Typeでも文字コードを指定するために、Ramze.startの前にコードを追加。
Ramaze::Global.content_type = 'text/html; charset=Shift_JIS' Ramaze.start
とりあえず、これで文字コードはShift JISにできて、文字化けの問題は解決できたみたい。