こんにちは、高石です。

cgi.head{}は、HTTPヘッダではなく、HTMLの<head></head>の中身
を書く場所です。
charsetはcgi.outの引数で指定します。

cgi.out({"charset" => "Shift_JIS"}) do
  cgi.html() do
    cgi.head do
      cgi.title{"TITLE"}
    end +
    cgi.body() do
    ...

という感じにしてみて下さい。

From: 金光雅夫 (KANEMITSU Masao) <masao-k / a-net.email.ne.jp>
Subject: [ruby-list:35902] CGI & DBI

> # HTMLの出力
> cgi.out() do
>   cgi.html() do
>     cgi.head do
>       cgi.header({"charset"=>"shift_jis"}) +
>       cgi.title{"TITLE"}
>     end +
>     cgi.body() do

cgi.header は、cgi.outを使わずに自力でHTMLを成生して出力した
い場合などに使います。

cgi = CGI.new('html3')
print cgi.header({"charset" => "Shift_JIS"})
print "<html><head><title>TITLE</title></head>\n"
print "<body>BODY</body></html>"
/--------------------------------------------------------/
  高石 勇人 < rio-t / presen.to >
  PGP Key(RSA): http://rio-t.presen.to/pgp/mykey.asc
         (DSS): http://rio-t.presen.to/pgp/mykey-dss.asc
/--------------------------------------------------------/