(solved) WEBrick+CGI encoding error / WEBrick+CGIでエンコーディングのエラー

webrickCGI を動かすとこういうのが出る:

  • Encoding::CompatibilityError: incompatible character encodings: ASCII-8BIT and US-ASCII
  • Encoding::InvalidByteSequenceError: "\xE5" on US-ASCII

該当箇所で

STDERR.puts Encoding.default_external

すると US-ASCII になっていて、外部エンコーディングが不適切なのが原因と分かった。

今書いてるものは外部エンコーディングは全体的に UTF-8 固定で構わないので、CGI実行に使う rubyコマンドライン引数で指定してみた。

server = WEBrick::HTTPServer.new(
  :DocumentRoot => "path/to/document_root",
  :BindAddress => "127.0.0.1",
  :CGIInterpreter => "/usr/bin/ruby -Eutf-8:utf-8", # <= これ
  :Port => 8000
  )



Rubyバージョン: 1.9.3p194