Ruby ruby1.9 编码问题 invalid byte sequence in US-ASCII

ane · 2014年05月27日 · 最后由 app_sys 回复于 2016年08月09日 · 6637 次阅读

刚刚部署代码,发现只能执行 migrate

可是报了“invalid byte sequence in US-ASCII”.网上找了很多方法,也都无效。求助强大的组织。

➜  tianjicom git:(production) rake db:migrate
[deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message.
rake aborted!
rake aborted!
invalid byte sequence in US-ASCII
/Users/ane/.rvm/gems/ruby-1.9.3-p545@rails32/bin/ruby_executable_hooks:15:in `eval'
/Users/ane/.rvm/gems/ruby-1.9.3-p545@rails32/bin/ruby_executable_hooks:15:in `<main>'
(See full trace by running task with --trace)
➜  tianjicom git:(production) 

先升级到 2.1

将下面一行添加到.bashrc 就 ok 了 export RUBYOPT="-U -Ku -E utf-8:utf-8"

#2 楼 @meeasyhappy 跟公司给我的文档里写的一模一样,就是不起作用

@ane 你 source ~/.bashrc 了没有

#4 楼 @meeasyhappy 我不仅 sourc 了,而且还重启了,唉,还是不行

6 楼 已删除

#6 楼 @meeasyhappy 我现在/etc/profile 加了个一次,然后在 bashrc 中加了一次,才成功

@ane cat /etc/bashrc

source /home/andy/.bashrc

看看/etc/bashrc 有没有 上面那一行,没有就加上,不用添加两次的。

#8 楼 @meeasyhappy 额,刚才好了,现在又不不行了。几个意思啊

我现在觉得貌似是 zshrc

if RUBY_VERSION =~ /1.9/ # assuming you're running Ruby ~1.9
  Encoding.default_external = Encoding::UTF_8
  Encoding.default_internal = Encoding::UTF_8
end

我是 sinatra 运行 task 的时候出这问题。在 task 调用时设置了编码。不加判断只要中间那两行,其他方法也试了,确实没用

需要 登录 后方可回复, 如果你还没有账号请 注册新账号