Ruby 1.9.3 UndefinedConversionError

时间:2012-01-28 10:25:57

标签: ruby-on-rails ruby

直到最近,我的计算机上的一切工作正常,但是几天后我随时都会从浏览器发送到服务器时出现错误Encoding::UndefinedConversionError: U+2713 from UTF-8 to US-ASCII

首先,由于涉及帖子,我在向database.yml:

添加编码时尝试了最明显的事情
development:
  adapter: postgresql
  hostname: localhost
  port: 5432
  username: mikael
  password:
  database: dev
  encoding: utf8

如果我安装ruby-debug19和ruby-debug-base19并使用:

运行rails
rails s --environment=development --debug

现在一切正常。我该如何找出问题的原因,以便我可以解决它?

编辑1:

1.9.3p0 :001 > Encoding.default_internal
 => #<Encoding:UTF-8> 
1.9.3p0 :002 > Encoding.default_external
 => #<Encoding:UTF-8> 

编辑2: 如果我在生产模式下运行一切正常。

4 个答案:

答案 0 :(得分:14)

尝试在shell中设置LC_ALLLANG变量。将这些行添加到〜/ .profile,〜/ .bash_profile,〜/ .zprofile或类似的地方 - 取决于您的系统。

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

您可以通过运行locale -a获取所有区域设置的列表。最后,当您在新的终端窗口中运行locale时,您会看到类似的内容:

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

答案 1 :(得分:3)

我今天遇到了这个问题。根据Lenart的回答,我的LC_ALL是空白但其他一切看起来都是正确的。更改LC_ALL也没有为我解决。

我的项目的解决方案是将rspec从2.14.6更新为2.14.7。

答案 2 :(得分:1)

这听起来像是bug,已经在Rails 3.1.2中报告了workaround,下一版本的1.9.3应该解决问题

答案 3 :(得分:0)

我的rails服务器从其记录器类中抛出了这个确切的错误。

通过升级到最新的Rails(3.2.13),它就消失了。我刚刚更改了我的Gemfile并执行了一个包更新尾部。