首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:不兼容字符编码: UTF-8和ASCII-8位

错误:不兼容字符编码: UTF-8和ASCII-8位
EN

Stack Overflow用户
提问于 2012-07-13 21:00:41
回答 2查看 8.2K关注 0票数 7

我得到了错误的incompatible character encodings: UTF-8 and ASCII-8BIT,当视图在数据库中找到一些字符,如:á,á,é等。

我的环境是:

  • Rails: 3.2.5
  • Ruby: 1.9.4p194
  • 数据库: Oracle 10g (10.2.0.1.0)

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

我试图用我的观点的第一行来写这个:

代码语言:javascript
复制
<% # encoding: utf-8 %>

enviroment.erb

代码语言:javascript
复制
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8

但没什么能解决这个。

拜托,谁能给点建议来解决这个问题。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-27 20:27:07

在文件boot.rb中,我添加了以下一行:

代码语言:javascript
复制
ENV['NLS_LANG'] = 'AMERICAN_AMERICA.UTF8'

我解决了我的问题。

票数 0
EN

Stack Overflow用户

发布于 2013-05-24 14:39:02

我也有同样的问题,经过几个小时的猴子补丁搜索后,我解决了这个问题。

代码语言:javascript
复制
    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
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11478316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档