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

我的设置是:

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无法显示它们。

提前致谢

请在您的environment.rb中添加以下行。

 Encoding.default_external = Encoding::UTF_8 Encoding.default_internal = Encoding::UTF_8 

问题将得到解决。

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

 export LC_ALL="en_US.UTF-8" 

你的~/.profile~/.bash_profile或类似的。 它就像一个魅力。

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

添加

  Encoding.default_external = Encoding::UTF_8 Encoding.default_internal = Encoding::UTF_8 

to config.ru为我解决了它。

 cd $HOME vi .bashrc 

在下面添加语言环境:

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

保存并运行:source~ / .bashrc

一切都还好〜

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

如果您的操作系统是Ubuntu那么您可以通过键入以下命令来检查您的locale

 sudo locale 

然后,您可以通过键入以下命令重新配置您的区域设置

 sudo locale-gen en_US.UTF-8 

它可能会帮助你。 谢谢。

对我来说问题是我使用的是旧版本的ruby。 rvm use 2.0做了伎俩。