コマンドプロンプトに下記の一つ目のファイルを入力し、その後webのアドレス欄で2つ目のファイルを実行すると「incompatible character encodings: Windows-31J and UTF-8」が発生してしまいます。
1つ目、
ruby
1# coding: utf-8 2require "webrick" 3config = { 4 :Port => 8099, 5 :DocumentRoot => '.', 6} 7 8# 拡張子erbのEBRを呼び出して、EBRHandlerと関連付ける 9WEBrick::HTTPServlet::FileHandler.add_handler("erb",WEBrick::HTTPServlet::ERBHandler) 10 11# WEBrickサーバークラスのインスタンスを作成 12server = WEBrick::HTTPServer.new(config) 13 14# erbのMINEタイプを設定 15server.config[:MimeTypes]["erb"] = "text/html" 16 17# ctrl-cでサーバの停止 18trap(:INT) do 19server.shutdown 20end 21 22server.start
そして2つ目
erb
1<%# coding: utf-8 %> 2<% require "rubygems" %> 3<% require "dbi" %> 4 5<% dbh = DBI.connect('DBI:SQLite3:fruits01.db') %> 6 7<% sth = dbh.execute("select * from products") %> 8 9<html> 10<body> 11<ul> 12 <% sth.each do |row| %> 13 <% row.each_with_name do |val,name| %> 14 <% name.force_encoding("UTF-8") %> 15 <% val.to_s.force_encoding("UTF-8") %> 16 <li><%= "#{name}: #{val.to_s}" %> 17 18 </li> 19<% end %> 20<hr> 21<% end %> 22</ul> 23 24</body> 25</html> 26 27<% sth.finish %> 28 29<% dbh.disconnect %>
そうすると、webページに「Internal Server Error incompatible character encodings: Windows-31J and UTF-8」となってしまいました。
上手く表示させるにはどこの部分のコードを改変したらいいでしょうか?
コマンドプロンプトに下記の一つ目のファイルを入力し、その後webのアドレス欄で2つ目のファイルを実行すると「incompatible character encodings: Windows-31J and UTF-8」が発生してしまいます。
1つ目、
ruby
1# coding: utf-8 2require "webrick" 3config = { 4 :Port => 8099, 5 :DocumentRoot => '.', 6} 7 8# 拡張子erbのEBRを呼び出して、EBRHandlerと関連付ける 9WEBrick::HTTPServlet::FileHandler.add_handler("erb",WEBrick::HTTPServlet::ERBHandler) 10 11# WEBrickサーバークラスのインスタンスを作成 12server = WEBrick::HTTPServer.new(config) 13 14# erbのMINEタイプを設定 15server.config[:MimeTypes]["erb"] = "text/html" 16 17# ctrl-cでサーバの停止 18trap(:INT) do 19server.shutdown 20end 21 22server.start
そして2つ目
erb
1<%# coding: utf-8 %> 2<% require "rubygems" %> 3<% require "dbi" %> 4 5<% dbh = DBI.connect('DBI:SQLite3:fruits01.db') %> 6 7<% sth = dbh.execute("select * from products") %> 8 9<html> 10<body> 11<ul> 12 <% sth.each do |row| %> 13 <% row.each_with_name do |val,name| %> 14 <% name.force_encoding("UTF-8") %> 15 <% val.to_s.force_encoding("UTF-8") %> 16 <li><%= "#{name}: #{val.to_s}" %> 17 18 </li> 19<% end %> 20<hr> 21<% end %> 22</ul> 23 24</body> 25</html> 26 27<% sth.finish %> 28 29<% dbh.disconnect %>
そうすると、webページに「Internal Server Error incompatible character encodings: Windows-31J and UTF-8」となってしまいました。
上手く表示させるにはどこの部分のコードを改変したらいいでしょうか?
追伸
コマンドプロントのエラーはこのようになっています。
cmd
1[2018-09-25 22:51:18] ERROR Encoding::CompatibilityError: incompatible character encodings: Windows-31J and UTF-8 2 (erb):16:in `concat' 3 (erb):16:in `block (3 levels) in evaluate' 4 F:/ruby2/Ruby24-x64/lib/ruby/gems/2.4.0/gems/dbi-0.4.5/lib/dbi/row.rb:82:in `block in each_with_name' 5 F:/ruby2/Ruby24-x64/lib/ruby/gems/2.4.0/gems/dbi-0.4.5/lib/dbi/row.rb:81:in `each' 6 F:/ruby2/Ruby24-x64/lib/ruby/gems/2.4.0/gems/dbi-0.4.5/lib/dbi/row.rb:81:in `each_with_index' 7 F:/ruby2/Ruby24-x64/lib/ruby/gems/2.4.0/gems/dbi-0.4.5/lib/dbi/row.rb:81:in `each_with_name' 8 (erb):13:in `block (2 levels) in evaluate' 9 F:/ruby2/Ruby24-x64/lib/ruby/gems/2.4.0/gems/dbi-0.4.5/lib/dbi/handles/statement.rb:214:in `fetch' 10 F:/ruby2/Ruby24-x64/lib/ruby/gems/2.4.0/gems/dbi-0.4.5/lib/dbi/handles/statement.rb:240:in `each' 11 (erb):12:in `block in evaluate' 12 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/erb.rb:896:in `eval' 13 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/erb.rb:896:in `result' 14 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/httpservlet/erbhandler.rb:83:in `block in evaluate' 15 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/httpservlet/erbhandler.rb:80:in `module_eval' 16 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/httpservlet/erbhandler.rb:80:in `evaluate' 17 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/httpservlet/erbhandler.rb:57:in `do_GET' 18 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/httpservlet/abstract.rb:107:in `service' 19 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/httpservlet/filehandler.rb:307:in `exec_handler' 20 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/httpservlet/filehandler.rb:238:in `do_GET' 21 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/httpservlet/abstract.rb:107:in `service' 22 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/httpservlet/filehandler.rb:234:in `service' 23 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/httpserver.rb:140:in `service' 24 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/httpserver.rb:96:in `run' 25 F:/ruby2/Ruby24-x64/lib/ruby/2.4.0/webrick/server.rb:308:in `block in start_thread' 26::1 - - [25/Sep/2018:22:51:18 東京 (標準時)] "GET /ex2605.erb HTTP/1.1" 500 335
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/25 14:09