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)だけになるので、コードがすっきりしました。
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にできて、文字化けの問題は解決できたみたい。
GoogleスプレッドシートをWebスクレイピングしてみた
http://ittemia.jp/zensen/themes/view/39
ここで駅名しりとりをしていて、私も機会があれば投稿したいなぁと、列車で移動中とかに時々チェックしている。一回出た駅は使えないルールなので、取りに行けそうだと思っても、今までに出てないか気になる事がある。
http://spreadsheets.google.com/pub?key=pS_Iu-LTUb202uc2p8lQoOw&gid=1
このGoogleスプレッドシートで、今までに出た駅名一覧が登録されているのだけど、携帯電話から見に行くには、フルブラウザを使わなくてはいけなかったりで、なかなか難しい。
このGoogleスプレッドシートはHTMLで表現されているので、Webスクレイピングして必要な情報だけ抜き出せば、携帯電話から見れる形に変換するのも簡単そう。そう思いついたので、さっそくやってみた。
ramazeをCGIで使うときもセッションを使う(helper編)
ramazeをCGIで使うときもセッションを使う - NAT’s Programming Champloo
上記エントリで、セッションをファイルに格納するモジュールFileSessionManagerを作りました。その続きです。
ramazeなら、FileSessionManagerみたいなモジュールはhelperにした方が良いよ、とコメント頂いたので、自分用helperにしてみました。自分用helper(custom helper)の作り方は、教えて頂いた、下記のページを参考にしました。
http://ramaze.net/features:helpers#custom-helpers
夏休みの自由研究完了
今日で会社の夏休みが終了。
今日のエントリ2つは、夏休みの数日間で調べたり試した物をまとめたもの。ある意味、夏休みの自由研究ですな。
まぁ、小学生がやるような自由研究じゃないけどね・・・。いや、いまどきの小学生ならPCを使った自由研究とかやるのかな?