ramazeで文字コードをShift JISにするには(続き)

ramazeで文字コードをShift JISにするには - NAT’s Programming Champloo
また↑の続き。


トラックバック頂きました。

この場合だと,ビューに限らず文字コードが関係する所はShift_jisで用意したりとかになると思うので(flashとか),そういう所にフックを書けることは想定してないような(文字コードは大抵統一される).

Ramazeの事後処理 - はてなかよっ!

なるほど、文字コードが関係するところはShift JISで統一した方が、すっきりしそうですね。ありがとうございます。


というわけで、ソースファイルの文字コードをShift JISで統一するように修正してみました。
(1) ソースファイルの文字コードをShift JISに変換して、インタプリタに渡すオプションに -Ks を指定

#!/usr/local/bin/ruby -Ks

(2) 外部から入力する文字はtosjisメソッド(require 'kconv'必要)でShift JISに変換

url = 'http://spreadsheets.google.com/pub?key=pS_Iu-LTUb202uc2p8lQoOw&gid=0'
doc = open(url).read.tosjis

(3) レスポンスのヘッダにはShift JISを指定

  def layout
    %{
<?xml version="1.0" encoding="Shift_JIS"?>
<html>
# ...途中省略...
</html>
    }
  end
Ramaze::Global.content_type = 'text/html; charset=Shift_JIS'
Ramaze.start

と、こんな感じで修正しました。
明示的にtosjisメソッドで文字コード変換するのが(2)だけになるので、コードがすっきりしました。