ERB とマークダウン テンプレートを使用する Ruby 1.9.3 で実行されている非常に単純な Sinatra アプリがあります。問題を示すために、それを削除しました。
これは、Mac OS X Snow Leopard で Sinatra 1.3.2 を実行しています。マークダウンには、rdiscount 1.6.8 を使用しています。
メインの Ruby ファイルには次のものが含まれます。
get '/services' do
erb :services
end
services.erb ファイルには次の内容が含まれています。
<%= markdown :'content/service1' %>
£
マークダウンファイル内には、1行しかありません
£
Sinatra アプリを実行して「サービス」ページをロードするEncoding::CompatibilityError at /services incompatible character encodings: UTF-8 and ASCII-8BIT
と、ERB ファイルの 2 行目 (「£」のみを含む行) で例外が発生します。
私は多くのグーグルを行ってきましたが、なぜこれが起こっているのかを理解することはできません。ERB とマークダウン ファイルは私のローカル ディスクでは UTF-8 ですが、明らかにそれらは Sinatra によって読み込まれ、文字列に変換されており、それらの文字列がどのようなエンコーディングであるかを知る方法がわかりません。
Sinatra に ASCII-8BIT の使用を強制すると (settings.default_encoding = 'ASCII-8BIT'
メインの Sinatra Ruby ファイルの先頭に追加することによって)、例外はスローされませんが、「£」文字が正しく表示されません。
ポインタはありますか?