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にできて、文字化けの問題は解決できたみたい。