使用redmine时出现incompatible character encodings: UTF-8 and ASCII-8BIT的解决方法

今天被这个问题困扰了一天,查了很久的资料,终于解决了,记在这里希望对有同样问题的朋友有帮助  :-)


这可能是由以下两种原因导致:

1、问题环境:模板中有<%="汉字"%>,且有UTF-8的字串变量,如I18n.t(:hello)返回的是UTF-8串。

      问题所在:Ruby 1.9.1的ERB处理编码的方式,看C:/Ruby192/lib/ruby/1.9.1中的erb.rb文件

 

def compile(s)
      enc = s.encoding
      raise ArgumentError, "#{enc} is not ASCII compatible" if enc.dummy?
      s = s.dup.force_encoding("ASCII-8BIT") # don't use constant Enoding::ASCII_8BIT for miniruby
      enc = detect_magic_comment(s) || enc

.....

 

这样,s的编码是"ASCII-8BIT",模板就是ASCII-8BIT编码,当有UTF-8的字串变量concat时,出错。

      解决方案:在 enc = detect_magic_comment(s) || enc 后添加一行 s.force_encoding(enc)

2、问题环境:数据库返回UTF-8的数据时,ActiveScaffold的列表以及查看出错。

      问题所在:ActiveRecord返回的数据,编码成了ASCII-8BIT,看代码list_column_helps.rb

def format_value(column_value, options = {})
        if column_empty?(column_value)
          active_scaffold_config.list.empty_field_text
        elsif column_value.is_a?(Time) || column_value.is_a?(Date)
          l(column_value, :format => options[:format] || :default)
        else
          column_value.to_s
        end
      end

我查到这里返回的值就是ASCII-8BIT编码了。查了下,从mysql_adapater出来的数据就是ASCII-8BIT的。

     解决方案:修改redmine根目录下的vendor/rails/activerecord/lib/active_record/connection_adapters中的mysql_adapter.rb文件,

 找到以下代码:

    def select(sql, name = nil)
          @connection.query_with_result = true
          result = execute(sql, name)
          rows = result.all_hashes
          result.free

          rows
        end

在result.free下面增加以下代码

          if @config[:encoding] && @config[:encoding]=="utf8"
            rows.each do |row|
              row.each do |key, value|
                if (value.class == String)
                  value.force_encoding("UTF-8")
                end
              end
            end
          end


这样我的这个问题就解决了,谁有更好的方法就分享一下~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: bitnami-redmine-4.2.3-0-windows-x64-installer.exe是一个安装文件,用于在Windows 64位操作系统上安装Bitnami Redmine 4.2.3-0。Bitnami是一个提供开源软件堆栈的公司,他们为用户提供了直接在他们的计算机上安装和运行的集成的开发环境。 Redmine是一种流行的项目管理和问题跟踪工具,基于Ruby on Rails开发。它具有强大的功能,包括项目管理、团队协作、问题跟踪、文档管理和间跟踪等功能。这个安装程序允许用户快速、方便地在Windows系统上部署和运行Redmine。 安装bitnami-redmine-4.2.3-0-windows-x64-installer.exe非常简单。只需双击该文件,然后按照安装向导的指示进行操作即可。安装过程中,该程序将自动安装Redmine的依赖项和所需的软件堆栈,并配置好数据库和服务器。一旦安装完成,用户可以通过浏览器访问Redmine的Web界面,并开始在他们的项目中管理任务和问题。 通过bitnami-redmine-4.2.3-0-windows-x64-installer.exe安装Redmine的主要优点之一是它提供了一个预配置的开发环境,不需要用户手动安装和配置必要的软件和依赖项。这简化了整个安装过程,节省了用户的间和精力。 总之,bitnami-redmine-4.2.3-0-windows-x64-installer.exe是一个方便的安装程序,让用户在Windows系统上快速安装和部署Bitnami Redmine 4.2.3-0。通过这个安装程序,用户可以使用Redmine的强大功能来管理和跟踪他们的项目。 ### 回答2: bitnami-redmine-4.2.3-0-windows-x64-installer.exe是一个在Windows操作系统中安装Bitnami Redmine 4.2.3-0的安装程序。这个安装程序可以帮助用户在自己的计算机上快速搭建和部署Redmine项目管理和问题跟踪工具。 Redmine是一个开源的项目管理工具,它提供了一系列功能,包括任务管理、问题追踪、版本控制、文档管理、日程安排等。通过Redmine,团队可以更好地协同工作、跟踪项目进展、记录问题和解决方案,并与团队成员进行交流和协作。 安装程序bitnami-redmine-4.2.3-0-windows-x64-installer.exe提供了一种简单和快速的方法来在Windows系统上安装和配置Redmine。用户只需要下载安装程序,双击运行,然后按照安装向导的指示进行操作即可。 安装过程中,用户可以选择Redmine的安装目录、数据库的设置(如使用MySQLSQLite)、管理员账户和密码等。安装完成后,用户就可以通过浏览器访问Redmine的网址,进行进一步的设置和配置。 通过安装程序bitnami-redmine-4.2.3-0-windows-x64-installer.exe,用户可以方便地在自己的计算机上搭建一个功能强大的项目管理工具,提高团队的协作效率、项目的管理和跟踪能力。同Bitnami还提供了一系列附加工具和插件,用户可以根据自己的需要进行选择和安装。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值