US-ASCII中的无效字节序列(Ruby 1.9 + rails 2.3.8 + mongodb + mongo_mapper)

时间:2010-07-07 05:25:50

标签: ruby-on-rails mongodb

我的设置是:

linux + Ruby 1.9 + rails 2.3.8 + mongodb + mongo_mapper

我跟着http://railscasts.com/episodes/194-mongodb-and-mongomapper,一切都好了。我可以成功插入英文字符串,但是当我插入一些中文字符串时,它会插入,但无法显示。

网页显示例外情况:

invalid byte sequence in US-ASCII 

我使用mongo命令查看mongodb中的数据,这是正确的。但我不知道为什么rails无法显示它们。

提前致谢

6 个答案:

答案 0 :(得分:20)

请在您的environment.rb。

中添加以下行
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8

问题将会解决。

答案 1 :(得分:18)

您可以更正此错误来写这个

export LC_ALL="en_US.UTF-8"

发送给~/.profile~/.bash_profile或类似内容。它就像一个魅力。

答案 2 :(得分:5)

我在Rack应用程序中遇到此错误。

添加

   Encoding.default_external = Encoding::UTF_8

   Encoding.default_internal = Encoding::UTF_8

config.ru为我解决了这个问题。

答案 3 :(得分:1)

cd $HOME
vi .bashrc

在下面添加语言环境:

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

保存并运行:     来源〜/ .bashrc

一切都很好〜

答案 4 :(得分:0)

检查您的操作系统的locale设置。您需要设置en_US。UTF-8`语言环境变量,否则您可能会遇到此问题。

如果您的操作系统为Ubuntu,则可以键入以下命令检查locale

sudo locale

然后您可以通过键入以下命令重新配置您的语言环境

sudo locale-gen en_US.UTF-8

它可能对你有所帮助。感谢。

答案 5 :(得分:0)

对我来说问题是我使用的是旧版本的ruby。 rvm use 2.0成功了。