Error: Incompatible character encodings: UTF-8 and ASCII-8BIT

拟墨画扇 提交于 2020-01-21 04:47:11

问题


I got the error incompatible character encodings: UTF-8 and ASCII-8BIT, when the view found in the database some characters like: ñ, á, é, etc.

My enviroment is:

  • Rails: 3.2.5
  • Ruby: 1.9.4p194
  • Database: Oracle 10g (10.2.0.1.0)

I can save this characters in the database, using Toad.

I tried to write this, in the first line of my view:

<% # encoding: utf-8 %>

In enviroment.erb

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

But nothing fixed this.

Please, can someone give some adviced to fixed this.

Thanks.


回答1:


I have the same issues, and I resolved it after hours of searching with a monkey patch.

    module ActiveSupport #:nodoc:
      class SafeBuffer < String

        def safe_concat(value)
          value = force_utf8_encoding(value)
          raise SafeConcatError unless html_safe?
          original_concat(value)
        end

        def concat(value)
          value = force_utf8_encoding(value)
          if !html_safe? || value.html_safe?
            super(value)
          else
            super(ERB::Util.h(value))
          end
        end

        alias << concat

        private

        def force_utf8_encoding(value)
          self.force_encoding('UTF-8').html_safe unless self.encoding.name == 'UTF-8'
          value = (value).force_encoding('UTF-8').html_safe unless value.nil? || value.encoding.name == 'UTF-8'
          value
        end
      end
    end



回答2:


In the file boot.rb, I added this line:

ENV['NLS_LANG'] = 'AMERICAN_AMERICA.UTF8'

Whit this I solved my problem.



来源:https://stackoverflow.com/questions/11478316/error-incompatible-character-encodings-utf-8-and-ascii-8bit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!