2

Sinatra を使用してアプリを作成しています。最近、特殊文字 (Yóü) を含む配列に要素を追加したときを除いて、アプリは問題なく動作します。

@peeps = ["Joe", "James", "Phil", "Jane", "Yóü"]

この配列をさまざまなことに使用していますが、この投稿に含める必要があるかどうかはわかりません。アプリを実行すると、ブラウザに次のエラーが表示されます。

Internal Server Error: invalid byte sequence in US-ASCII

実行後、ターミナル ウィンドウに次のように表示されます。ruby app.rb

app.rb:34: invalid multibyte char (US-ASCII)
app.rb:34: invalid multibyte char (US-ASCII)
app.rb:34: syntax error, unexpected $end, expecting ']'

また、変更を加えてページを更新するだけで済むため、私は通常、Shotgunを使用してサーバーを実行しています。実行するとこのエラーが表示されますshotgun app.rb

[2012-08-16 21:36:37] ERROR ArgumentError: invalid byte sequence in US-ASCII
    /Users/me/.rvm/gems/ruby-1.9.3-p125@rails3tutorial2ndEd/gems/rack-1.4.1/lib/rack/utils.rb:182:in `gsub'
    /Users/me/.rvm/gems/ruby-1.9.3-p125@rails3tutorial2ndEd/gems/rack-1.4.1/lib/rack/utils.rb:182:in `escape_html'
    /Users/me/.rvm/gems/ruby-1.9.3-p125@rails3tutorial2ndEd/gems/shotgun-0.9/lib/shotgun/loader.rb:76:in `format_error'
    /Users/me/.rvm/gems/ruby-1.9.3-p125@rails3tutorial2ndEd/gems/shotgun-0.9/lib/shotgun/loader.rb:52:in `proceed_as_parent'
    /Users/me/.rvm/gems/ruby-1.9.3-p125@rails3tutorial2ndEd/gems/shotgun-0.9/lib/shotgun/loader.rb:28:in `call!'
    /Users/me/.rvm/gems/ruby-1.9.3-p125@rails3tutorial2ndEd/gems/shotgun-0.9/lib/shotgun/loader.rb:18:in `call'
    /Users/me/.rvm/gems/ruby-1.9.3-p125@rails3tutorial2ndEd/gems/shotgun-0.9/lib/shotgun/favicon.rb:12:in `call'
    /Users/me/.rvm/gems/ruby-1.9.3-p125@rails3tutorial2ndEd/gems/shotgun-0.9/lib/shotgun/static.rb:14:in `call'
    /Users/me/.rvm/gems/ruby-1.9.3-p125@rails3tutorial2ndEd/gems/rack-1.4.1/lib/rack/builder.rb:134:in `call'
    /Users/me/.rvm/gems/ruby-1.9.3-p125@rails3tutorial2ndEd/gems/rack-1.4.1/lib/rack/handler/webrick.rb:59:in `service'
    /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
    /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
    /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
4

3 に答える 3

7

config.ru の先頭に次の行を追加することで、最終的にうまくいきました。

Encoding.default_external = Encoding::UTF_8

それが役に立てば幸い。

于 2013-10-27T16:16:50.080 に答える
5

すべてのコードを投稿したわけではありませんが、ファイルを UTF-8 としてマークする必要がある可能性があります。これは、上部の「マジック コメント」で行うことができます。

# encoding: utf-8

これは、この問題の適切な説明です。

于 2012-08-16T20:48:32.687 に答える
0

すでに上部にある単一ファイルのアプリ# encoding: utf-8がありましたが、そのエラーはまだありました。

私を助けたのは、config.ruファイルを作成することでした:

require File.expand_path '../my_app.rb', __FILE__
run Sinatra::Application
于 2015-02-22T15:51:26.877 に答える