Soru uyumsuz karakter kodlamaları: ASCII-8BIT ve UTF-8


Ruby 1.9.2 ve Rails 3.0.5 kullanıyorum

Aşağıdaki hatayı aldım:

uyumsuz karakter kodlamaları: ASCII-8BIT ve UTF-8

Sanırım veritabanı ile ilgisi yok.

Hata, bu satırda bir görünümde (sadece bir div haml çağrısı) hacker ediyor:

#content

tam yığın:

    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'

Benim taşlar:

        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) 

64
2018-03-12 22:55


Menşei


Uygulamanız varsayılan kodlama olarak 'UTF-8' veya 'ASCII-8BIT' kullanıyor mu? Ayrıca, herhangi bir flash mesajınız yoksa bu hatayı alıyor musunuz? - Pan Thomakos
Bu şekilde çözdüm: stackoverflow.com/questions/11478316/... - mvlwn
Sadece bir yorum bırakarak: TextEdit kullanarak bir dosyayı düzenledim ve değiştirdim ==> '<== to a ==> `<==: sonra bu hatayı attı. TextEdit çöp yığını kullanmayın - Rambatino


Cevaplar:


Haml şablonunuzun bir parçasını dosyaya kopyaladığınız / yapıştırdığınız veya Unicode olmayan / UTF-8 olmayan bir editörle çalıştığınız konusunda şüphem var.

Bu dosyayı UTF-8 uyumlu bir düzenleyicide sıfırdan yeniden oluşturabilir misiniz. Herhangi bir platform için bol miktarda var ve sorununun giderilip giderilmediğine bakın. İle satır silerek başlayın #content ve elle yeniden yazarak.


13
2018-03-12 23:41



Emriniz için teşekkürler. Gerçekten geçersiz bir karakter vardı. Metinde bir tane vardı. Hata çizgisi aynı değildi çünkü çok zordu. Cevabınız için teşekkürler! - Michael Koper


Bu adımları izleyerek çözdüm:

  • Emin olmak config.encoding = "utf-8" application.rb dosyasında.
  • 'Mysql2' gem'i kullandığınızdan emin olun.
  • Koymak # encoding: utf-8 UTF-8 karakterleri içeren dosyanın üstünde.
  • Yukarıda <App Name>::Application.initialize! environment.rb dosyasında satır, aşağıdaki iki satırı ekleyin:

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

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


61
2017-08-02 18:18



kullanma mysql2 benim için iyi çalıştı, teşekkürler! - Bağdaştırıcıyı değiştir database.ymliçin mysql2de! - pex
Burada önerildiği gibi 'mysql2', '<0.3' gemini kullanmam gerekti: stackoverflow.com/questions/5840742/... - marimaf
config / database.yml dosyasını düzenleyin, 'mysql' bağdaştırıcısını 'mysql2' olarak değiştirin. - Tim Wong
Ayrıca unutmayın ki Encoding.default_external = Encoding::UTF_8 ruby dosyaları için geçerli görünmüyor /lib Klasör. Ekleme # encoding: utf-8 Her dosyanın üstünde benim için hile var! - Augustin Riedinger


Bu soruna neden olan kesin çizgiyi bulmaya çalışın ve sonra UTF8 kodlamasını zorlayın, bu çözüm benim için işe yaradı.

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


42
2018-02-14 14:36



Buna sebep olan standart rubyelerde bile bazı fonksiyonlar var gibi görünüyor. Benim için Digest :: MD5.digest (Random.rand (10000) .to_s) oldu - Smar
FWIW, bu hat ikili, geçerli olmayan bir veri verisi çıkarır ... - Smar
bu oydu! Bir dosyadan Dize'ye Görüntülenecek Markdown ... - Tails
Raylardan geçiş yaparken 4.2.8 ila 4.2.9 puts "debug URL is #{request.fullpath}" denetleyicide hataya neden oldu, request.fullpath.inspect değerine dönüştü. - jpwynn


ASCII-8BIT, Ruby'nin normal 0-0x7f ASCII karakter kümesinin üzerindeki karakterlerin açıklamasıdır ve bunlar tek baytlı karakterlerdir. Tipik olarak bu, ISO-8859-1 veya kardeşlerinden biri gibi bir şey olurdu.

Soruna hangi karakterin neden olduğunu belirtebilirseniz, Ruby 1.9.2'nin karakterin karakter kümesiyle UTF-8 arasında dönüştürülmesini söyleyebilirsin.

James Gray bir şeyler yazdı. blog dizileri Bu tür problemlerden ve onlarla nasıl başa çıkılacağından bahseder. Onlara gitmenizi tavsiye ederim.

uyumsuz karakter kodlamaları: ASCII-8BIT ve UTF-8

Bu genellikle, iki dizeyi birleştirmeye çalıştığınız ve diğerinin, diğer dizenin karakter kümesine eşlenmeyen karakterler içerdiği için olur. ISO-8859-1'de UTF-8'de eşdeğerleri olmayan ve tam tersi ve bu uyumsuzluklarla dizgi birleştirmenin nasıl yapılacağı, programcının devreye girmesini gerektiriyor.


11
2018-03-13 01:07



Ruby'nin ISO-8859-1 için açıklaması "ISO-8859-1" dir. "ASCII-8BIT", ruby'nin ikili veriler için açıklamasıdır. - sepp2k


Gem paketi mysql2'yi kurdum.

gem install mysql2

ve sonra bağdaştırıcısını mysql2 içinde database.yml olarak değiştirdim.


6
2018-06-13 12:49



basit ve harika, benim için doldurulan: D - Ali Qanavatian
Aww yeahh rock'n'roll kızarmış benim iş burada çalıştı! : D - dctremblay


Haml için bir kodlama ipucu koydu:

-# coding: UTF-8

Haml sayfasının sol üst tarafında.


5
2018-05-02 10:08





UTF8'i ile zorlayabilirsiniz force_encoding(Encoding::UTF_8):

Örnek:

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

5
2018-04-20 01:19