Ruby 1.9.3 UndefinedConversionError

mhe*_*xon 8 ruby ruby-on-rails

直到最近,我的机器上的一切工作正常,但是几天后我一直在Encoding::UndefinedConversionError: U+2713 from UTF-8 to US-ASCII从浏览器向服务器发布内容时出现错误.

首先,由于涉及帖子,我尝试了向数据库添加编码最明显的事情.

development:
  adapter: postgresql
  hostname: localhost
  port: 5432
  username: mikael
  password:
  database: dev
  encoding: utf8
Run Code Online (Sandbox Code Playgroud)

如果我安装ruby-debug19和ruby-debug-base19并运行rails:

rails s --environment=development --debug
Run Code Online (Sandbox Code Playgroud)

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

编辑1:

1.9.3p0 :001 > Encoding.default_internal
 => #<Encoding:UTF-8> 
1.9.3p0 :002 > Encoding.default_external
 => #<Encoding:UTF-8> 
Run Code Online (Sandbox Code Playgroud)

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

Len*_*art 15

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

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

您可以通过运行获取所有语言环境的列表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"
Run Code Online (Sandbox Code Playgroud)


Fre*_*ung 1

这听起来像是 Rails 3.1.2 中报告的错误有一个解决方法,下一版本的 1.9.3 应该可以解决该问题