web-dev-qa-db-ja.com

互換性のない文字エンコーディング:ASCII-8BITとUTF-8

Ruby 1.9.2 and Rails 3.0.5

次のエラーがあります。

互換性のない文字エンコーディング:ASCII-8BITとUTF-8

それは私が思うデータベースとは何の関係もありません。

ビューのこの行でエラーが発生しています(div haml呼び出しのみ):

#content

フルスタック:

    ActionView::Template::Error (incompatible character encodings: ASCII-8BIT and UTF-8):
        21:                     -flash.each do |name, msg|
        22:                         =content_tag :div, msg, :id => "flash_#{name}"
        23:                         %div.clear                      
        24:                     #content                                        
        25:                         = yield
        26:             = render :partial => "layouts/grid_right" if render_grid_right?
        27:             = render :partial => "layouts/footer"
      app/views/layouts/application.html.haml:24:in `_app_views_layouts_application_html_haml___4380000789490545718_2180251300_2717546578298801795'
      actionpack (3.0.5) lib/action_view/template.rb:135:in `block in render'
      activesupport (3.0.5) lib/active_support/notifications.rb:54:in `instrument'
      actionpack (3.0.5) lib/action_view/template.rb:127:in `render'
      actionpack (3.0.5) lib/action_view/render/layouts.rb:80:in `_render_layout'
      actionpack (3.0.5) lib/action_view/render/rendering.rb:62:in `block in _render_template'
      activesupport (3.0.5) lib/active_support/notifications.rb:52:in `block in instrument'
      activesupport (3.0.5) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
      activesupport (3.0.5) lib/active_support/notifications.rb:52:in `instrument'
      actionpack (3.0.5) lib/action_view/render/rendering.rb:56:in `_render_template'
      actionpack (3.0.5) lib/action_view/render/rendering.rb:26:in `render'
      haml (3.0.25) lib/haml/helpers/action_view_mods.rb:13:in `render_with_haml'
      actionpack (3.0.5) lib/abstract_controller/rendering.rb:115:in `_render_template'
      actionpack (3.0.5) lib/abstract_controller/rendering.rb:109:in `render_to_body'
      actionpack (3.0.5) lib/action_controller/metal/renderers.rb:47:in `render_to_body'
      actionpack (3.0.5) lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
      actionpack (3.0.5) lib/abstract_controller/rendering.rb:102:in `render_to_string'
      actionpack (3.0.5) lib/abstract_controller/rendering.rb:93:in `render'
      actionpack (3.0.5) lib/action_controller/metal/rendering.rb:17:in `render'
      actionpack (3.0.5) lib/action_controller/metal/instrumentation.rb:40:in `block (2 levels) in render'
      activesupport (3.0.5) lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
      /Users/michaelkoper/.rvm/rubies/Ruby-1.9.2-p180/lib/Ruby/1.9.1/benchmark.rb:309:in `realtime'
      activesupport (3.0.5) lib/active_support/core_ext/benchmark.rb:5:in `ms'
      actionpack (3.0.5) lib/action_controller/metal/instrumentation.rb:40:in `block in render'
      actionpack (3.0.5) lib/action_controller/metal/instrumentation.rb:78:in `cleanup_view_runtime'
      activerecord (3.0.5) lib/active_record/railties/controller_runtime.rb:15:in `cleanup_view_runtime'
      actionpack (3.0.5) lib/action_controller/metal/instrumentation.rb:39:in `render'
      actionpack (3.0.5) lib/action_controller/metal/implicit_render.rb:10:in `default_render'
      actionpack (3.0.5) lib/action_controller/metal/mime_responds.rb:261:in `block in retrieve_response_from_mimes'
      actionpack (3.0.5) lib/action_controller/metal/mime_responds.rb:192:in `call'
      actionpack (3.0.5) lib/action_controller/metal/mime_responds.rb:192:in `respond_to'
      app/controllers/home_controller.rb:9:in `index'
      actionpack (3.0.5) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
      actionpack (3.0.5) lib/abstract_controller/base.rb:150:in `process_action'
      actionpack (3.0.5) lib/action_controller/metal/rendering.rb:11:in `process_action'
      actionpack (3.0.5) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
      activesupport (3.0.5) lib/active_support/callbacks.rb:445:in `_run__3968431659371141392__process_action__3163094469870857953__callbacks'
      activesupport (3.0.5) lib/active_support/callbacks.rb:409:in `_run_process_action_callbacks'
      activesupport (3.0.5) lib/active_support/callbacks.rb:93:in `run_callbacks'
      actionpack (3.0.5) lib/abstract_controller/callbacks.rb:17:in `process_action'
      actionpack (3.0.5) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
      activesupport (3.0.5) lib/active_support/notifications.rb:52:in `block in instrument'
      activesupport (3.0.5) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
      activesupport (3.0.5) lib/active_support/notifications.rb:52:in `instrument'
      actionpack (3.0.5) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
      actionpack (3.0.5) lib/action_controller/metal/rescue.rb:17:in `process_action'
      actionpack (3.0.5) lib/abstract_controller/base.rb:119:in `process'
      actionpack (3.0.5) lib/abstract_controller/rendering.rb:41:in `process'
      actionpack (3.0.5) lib/action_controller/metal.rb:138:in `dispatch'
      actionpack (3.0.5) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
      actionpack (3.0.5) lib/action_controller/metal.rb:178:in `block in action'
      actionpack (3.0.5) lib/action_dispatch/routing/route_set.rb:62:in `call'
      actionpack (3.0.5) lib/action_dispatch/routing/route_set.rb:62:in `dispatch'
      actionpack (3.0.5) lib/action_dispatch/routing/route_set.rb:27:in `call'
      rack-mount (0.6.13) lib/rack/mount/route_set.rb:148:in `block in call'
      rack-mount (0.6.13) lib/rack/mount/code_generation.rb:93:in `block in recognize'
      rack-mount (0.6.13) lib/rack/mount/code_generation.rb:68:in `optimized_each'
      rack-mount (0.6.13) lib/rack/mount/code_generation.rb:92:in `recognize'
      rack-mount (0.6.13) lib/rack/mount/route_set.rb:139:in `call'
      actionpack (3.0.5) lib/action_dispatch/routing/route_set.rb:492:in `call'
      haml (3.0.25) lib/sass/plugin/rack.rb:41:in `call'
      actionpack (3.0.5) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
      actionpack (3.0.5) lib/action_dispatch/middleware/head.rb:14:in `call'
      rack (1.2.1) lib/rack/methodoverride.rb:24:in `call'
      actionpack (3.0.5) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
      actionpack (3.0.5) lib/action_dispatch/middleware/flash.rb:182:in `call'
      actionpack (3.0.5) lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call'
      actionpack (3.0.5) lib/action_dispatch/middleware/cookies.rb:302:in `call'
      activerecord (3.0.5) lib/active_record/query_cache.rb:32:in `block in call'
      activerecord (3.0.5) lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache'
      activerecord (3.0.5) lib/active_record/query_cache.rb:12:in `cache'
      activerecord (3.0.5) lib/active_record/query_cache.rb:31:in `call'
      activerecord (3.0.5) lib/active_record/connection_adapters/abstract/connection_pool.rb:354:in `call'
      actionpack (3.0.5) lib/action_dispatch/middleware/callbacks.rb:46:in `block in call'
      activesupport (3.0.5) lib/active_support/callbacks.rb:415:in `_run_call_callbacks'
      actionpack (3.0.5) lib/action_dispatch/middleware/callbacks.rb:44:in `call'
      rack (1.2.1) lib/rack/sendfile.rb:107:in `call'
      actionpack (3.0.5) lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
      actionpack (3.0.5) lib/action_dispatch/middleware/show_exceptions.rb:47:in `call'
      railties (3.0.5) lib/Rails/rack/logger.rb:13:in `call'
      rack (1.2.1) lib/rack/runtime.rb:17:in `call'
      activesupport (3.0.5) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
      rack (1.2.1) lib/rack/lock.rb:11:in `block in call'
      <internal:prelude>:10:in `synchronize'
      rack (1.2.1) lib/rack/lock.rb:11:in `call'
      actionpack (3.0.5) lib/action_dispatch/middleware/static.rb:30:in `call'
      railties (3.0.5) lib/Rails/application.rb:168:in `call'
      railties (3.0.5) lib/Rails/application.rb:77:in `method_missing'
      railties (3.0.5) lib/Rails/rack/log_tailer.rb:14:in `call'
      rack (1.2.1) lib/rack/content_length.rb:13:in `call'
      rack (1.2.1) lib/rack/chunked.rb:15:in `call'
      rack (1.2.1) lib/rack/handler/mongrel.rb:67:in `process'
      mongrel (1.2.0.pre2) lib/mongrel.rb:165:in `block in process_client'
      mongrel (1.2.0.pre2) lib/mongrel.rb:164:in `each'
      mongrel (1.2.0.pre2) lib/mongrel.rb:164:in `process_client'
      mongrel (1.2.0.pre2) lib/mongrel.rb:291:in `block (2 levels) in run'

私の宝石:

        Using rake (0.8.7) 
        Using RedCloth (4.2.2) 
        Using abstract (1.0.0) 
        Using activesupport (3.0.5) 
        Using builder (2.1.2) 
        Using i18n (0.5.0) 
        Using activemodel (3.0.5) 
        Using erubis (2.6.6) 
        Using rack (1.2.1) 
        Using rack-mount (0.6.13) 
        Using rack-test (0.5.7) 
        Using tzinfo (0.3.24) 
        Using actionpack (3.0.5) 
        Using mime-types (1.16) 
        Using polyglot (0.3.1) 
        Using treetop (1.4.9) 
        Using mail (2.2.15) 
        Using actionmailer (3.0.5) 
        Using arel (2.0.9) 
        Using activerecord (3.0.5) 
        Using activeresource (3.0.5) 
        Using authlogic (2.1.6) 
        Using xml-simple (1.0.14) 
        Using aws-s3 (0.6.2) 
        Using block_helpers (0.3.3) 
        Using bundler (1.0.10) 
        Using diff-lcs (1.1.2) 
        Using json (1.4.6) 
        Using gherkin (2.3.4) 
        Using term-ansicolor (1.0.5) 
        Using cucumber (0.10.0) 
        Using cucumber-Rails (0.3.2) 
        Using daemons (1.0.10) 
        Using database_cleaner (0.6.5) 
        Using factory_girl (1.3.3) 
        Using faker (0.9.5) 
        Using formtastic (1.2.3) 
        Using gem_plugin (0.2.3) 
        Using haml (3.0.25) 
        Using thor (0.14.6) 
        Using railties (3.0.5) 
        Using Rails (3.0.5) 
        Using kaminari (0.10.4) 
        Using mongrel (1.2.0.pre2) 
        Using mysql2 (0.2.6) 
        Using nokogiri (1.4.4) 
        Using Paperclip (2.3.8) 
        Using rspec-core (2.5.1) 
        Using rspec-expectations (2.5.0) 
        Using rspec-mocks (2.5.0) 
        Using rspec (2.5.0) 
        Using yard (0.6.4) 
        Using pickle (0.4.4) 
        Using populator (1.0.0) 
        Using rspec-Rails (2.5.0) 
        Using webrat (0.7.3) 
68
Michael Koper

Hamlテンプレートの一部をファイルにコピー/貼り付けしたか、Unicode/UTF-8に対応していないエディターで作業しているのではないかと疑っています。

UTF-8に対応したエディターで、そのファイルを最初から再作成できるかどうかを確認してください。すべてのプラットフォームに対応しており、問題が解決するかどうかを確認してください。 #contentで行を消去し、手動で再入力することから始めます。

15

次の手順に従って解決しました。

  • config.encoding = "utf-8"がapplication.rbファイルにあることを確認してください。
  • 「mysql2」gemを使用していることを確認してください。
  • UTF-8文字を含むファイルの先頭に# encoding: utf-8を配置します。
  • Environment.rbファイルの<App Name>::Application.initialize!行の上に、次の2行を追加します。

    Encoding.default_external = Encoding::UTF_8
    Encoding.default_internal = Encoding::UTF_8
    

http://rorguide.blogspot.com/2011/06/incompatible-character-encodings-ascii.html

62
Ritesh Kumar

この問題を引き起こしている正確な行を見つけてから、UTF8コーディングを実施してみてください。この解決策はうまくいきました。

title.to_s.force_encoding( "UTF-8")

45
mfq

ASCII-8BITは、通常の0-0x7f ASCII character-set、および1バイト文字です。通常はISO-8859-1または1その兄弟の。

問題の原因となっている文字を特定できる場合は、Ruby 1.9.2にその文字の文字セットをUTF-8に変換するように伝えることができます。

James Grayは 一連のブログ を書いて、この種の問題とその対処方法について話しました。それらを通過することをお勧めします。

互換性のない文字エンコーディング:ASCII-8BITとUTF-8

これは通常、2つの文字列を連結しようとしているために発生します。1つには他の文字列の文字セットにマップされない文字が含まれています。 ISO-8859-1にはUTF-8に相当するものがない文字があり、その逆、およびそれらの非互換性と文字列の結合を処理する方法はプログラマーが介入する必要があります。

11
the Tin Man

Gemパッケージmysql2をインストールしました。

gem install mysql2

そして、database.ymlのmysql2のアダプターを変更しました。

6
StandDuPp

Hamlの場合、エンコードヒントを追加します。

-# coding: UTF-8

hamlページの左上にあります。

6
umitka

force_encoding(Encoding::UTF_8)でUTF8を強制できます:

例:

<%= yield.force_encoding(Encoding::UTF_8) %>
6
Daniel Loureiro

問題は、iOSバージョンの周りに間違った引用符を使用していたことです。引用符はすべて「または」ではなく「」にしてください。

https://github.com/CocoaPods/CocoaPods/issues/829

5
Yllow

変数をエンコードするための「凍結された文字列を変更できません」というエラーを防ぐには、var.dup.force_encoding(Encoding::ASCII_8BIT)またはvar.dup.force_encoding(Encoding::UTF_8)を使用できます。

2
DarkAiR

アプリをRuby 1.8.7から1.9.3に移行中にエラーが発生しましたが、本番環境でのみ発生しました。Memcacheストアに残り物が残っていることが判明しました。 Ruby 1.9.3バージョンのアプリは、古いASCII-8BIT値と新しいUTF-8を混在させようとしました。

キャッシュをフラッシュして修正するのと同じくらい簡単でした。

2
carp

同様の問題が発生しました。 UTF-8エンコーディングを解決しましたが(mysql2およびEncoding.default_external = Encoding :: UTF_8 ...)互換性のない文字エンコーディング:UTF-8およびASCII-8BIT間違ったヘルパーパラメータを使用すると発生しました例えばf.button :submit, "Zrušiť"-完全に機能しますが、f.button "Zrušiť"-エンコードエラーをスローします。

2
remo

記録のために:私にとっては、それは'mysql'と呼ばれるgemであることが判明しました...明らかにこれはデフォルトでS-ASCII 8ビットで動作しています。 mysql2(2はここで重要なポイント)と呼ばれるgemに変更すると、すべての問題が解決しました。

上記のgemリストを見てみました-Michael Koperは明らかにmysql2をインストールしましたが、誰かがこの問題を抱えている場合に備えてこれを投稿しました..(理解するのに時間がかかりました)。

この回答が気に入らない場合はコメントしてください。削除します。

追伸:ドイツ語のウムラウト(ä、ö、ü)がmysqlでそれを台無しにしました

0

「type」パラメーターの指定を忘れたため、この問題に遭遇したのは非常に奇妙です。例えば。:

add_column :cms_Push_msgs, :Android_title

次のようにする必要があります:

add_column :cms_Push_msgs, :Android_content, :string 

似たような問題があり、gem string-scrubによって自動的に修正されました。 https://github.com/hsbt/string-scrub 指定された文字列に無効なバイトシーケンスが含まれている場合、その無効なバイトシーケンスはUnicode置換文字(�)に置き換えられ、新しい文字列が返されます。

0
dabobert

カスタムCoffeeScriptファイルでも同様の問題がありました。エンドラインエンコーディングを「Unix/Linux」から「Mac OS Classic」に変更することで解決しました

0
Sidhannowe

Ruby 1.9.2でCSVファイルを解析するときに同じ問題がありましたが、Ruby 1.8で解析されました。答えが見つかりました こちら 。Ruby CSVモジュールでCSVファイルを開く場合、次のようにUTF-8エンコードを指定する必要があります。

CSV.foreach("file.txt", encoding: "UTF-8") do |row|
   # foo and bar correctly encoded
   foo, bar, ... = row
end
0
Eduardo

Rails 4.1、Ruby 2.3.3の最近のプロジェクトで、stacktracetraceはレイアウトapplication.html.hamlで発生します。

野生のガチョウの追跡の後、犯人はすべてのページのフッターに最近追加されたUTF-8文字でした。何らかの奇妙な理由で、エラーは断続的にしか現れません。

UTF-8文字を対応するHTMLエスケープシーケンスで置き換える&#xHHHH;は問題を解決しました。

これにより、将来、他の人が時間を節約できることを願っています。

0
Tilo

Rails-latex-gemを使用してPDFドキュメントを作成すると、同様の問題が発生します。 layouts/application.pdf.erbを次のように変更することでこれを解決しました

\begin{document}

<%= yield.force_encoding("UTF-8") %>


\end{document}
0
hartmut