LoginSignup
9
9

More than 5 years have passed since last update.

Sinatra が ''invalid byte sequence in Windows-31J" でエラーページを表示しない(@Windows)

Posted at

アプリケーションのバグがあると Sinatra がエラーページを表示してくれるはずなのですが、
Windows7 上で


 invalid byte sequence in Windows-31J

としかブラウザに表示されずに困っていました。lib/rack/utis.rb の以下のメソッド内でエラーになっているので、エンコーディングが一致していないことは分かります。

def escape_html(string)
  string.to_s.gsub(ESCAPE_HTML_PATTERN){|c| ESCAPE_HTML[c] }
end

config.ru にも app.rb にも


# coding: utf-8

を書いていたのですが。

で、真面目に調べたところ

> ruby -e 'puts Encoding.default_external'
Windows-31J

というのが問題っぽいので、ググってみたら http://d.hatena.ne.jp/yohfee/20100810/1281449589 を発見! これに基づいて config.ru を

config.ru
# coding: utf-8

Encoding.default_external = 'utf-8'

require File.dirname(__FILE__) + '/app.rb'
Application.run!

としたところ、上手くいきました。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9