错误:不兼容的字符编码:UTF-8和ASCII-8BIT(Error: Incompatible c

2019-06-26 07:14发布

我得到的错误incompatible character encodings: UTF-8 and ASCII-8BIT ,当数据库中发现了一些字符,如认为:N,A,E等

我的环境是:

  • 扶手:3.2.5
  • 红宝石:1.9.4p194
  • 数据库:Oracle 10g中(10.2.0.1.0)

我可以在数据库中保存这个字符,使用蟾蜍。

我试着写这篇文章,我认为第一行:

<% # encoding: utf-8 %>

enviroment.erb

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

但是,没有什么固定的这一点。

请,有人可以给些谏固定这一点。

谢谢。

Answer 1:

我也有同样的问题,我与猴子补丁的搜索小时后解决它。

    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


Answer 2:

在该文件中boot.rb ,我加入这一行:

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

白衣这个我解决我的问题。



文章来源: Error: Incompatible character encodings: UTF-8 and ASCII-8BIT