开发者

invalid byte sequence in US-ASCII (Ruby 1.9 + rails 2.3.8 + mongodb + mongo_mapper)

My setup is:

linux + Ruby 1.9 + rails 2.3.8 + mongodb + mongo_mapper

I followed http:开发者_如何学C//railscasts.com/episodes/194-mongodb-and-mongomapper, that everything is OK first. I can insert English strings successfully, but when I insert some Chinese strings, it inserted, but can't be displayed.

The web page shows an exception:

invalid byte sequence in US-ASCII 

I use mongo command to see the data in mongodb, and it's correct. But I don't know why rails can't display them.

thanks in advance


Please add the following lines in your environment.rb .

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

The problem will be solved.


You may correct this error writing this

export LC_ALL="en_US.UTF-8"

to your ~/.profile, ~/.bash_profile or similar. It works like a charm.


I had this error with a Rack application.

Adding

   Encoding.default_external = Encoding::UTF_8

   Encoding.default_internal = Encoding::UTF_8

to config.ru resolved it for me.


cd $HOME
vi .bashrc

add locale conf below:

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

save and run: source ~/.bashrc

Everything is okay~


check your locale settings of your OS. You need to set up en_US.UTF-8` locale environment variable otherwise you may face this problem.

If you operating system is Ubuntu then you can check your locale by typing the following command.

sudo locale

and then you can re-configure your locale by typing the following command

sudo locale-gen en_US.UTF-8

It may help you. Thanks.


For me the problem was that I was using an older version of ruby. rvm use 2.0 did the trick.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜