每台机器的Ruby stdout编码更改

时间:2013-10-21 20:55:24

标签: ruby encoding utf-8 character-encoding

我已经尝试了一千种方法来解决这个问题,但我没有更多的想法。在Ruby 1.9.3p448中,我在我的本地机器和prod服务器上设置了我的语言环境:

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

在irb中,两台计算机上Encoding.default_internalEncoding.default_external均为UTF-8

但是,运行此命令并解析stdout会导致生产错误,而不是本地框:

parse_stdin, parse_stdout, parse_stderr, parse_exit = Open3.popen3("myshellcommand", "myparam")
puts parse_stdout.gets.to_s

错误:

invalid byte sequence in US-ASCII

还有什么会影响Ruby字符串编码,认为它是US-ASCII?不应该从语言环境设置吗?

编辑:经过进一步调查后,角色为“\ xC3”。

编辑:我在Ubuntu 12.04上使用Ruby 1.9.3p448和rubygems 1.8.24

0 个答案:

没有答案