如何修复因编码错误而失败的Ruby脚本:US-ASCII上的“\ xD8”?

运行项目时出现以下错误:

cucumber --format junit --guess --out ./ 

这是错误:

 Checkout:workspace / /var/lib/hudson/jobs/PersOC-CucumberTests/workspace - hudson.remoting.LocalChannel@3b815cce Using strategy: Default Last Built Revision: Revision 3dc11ccba9c86308b422d6261ecde95d0a4ae999 (origin/master) Checkout:workspace / /var/lib/hudson/jobs/CucumberTests/workspace - hudson.remoting.LocalChannel@3b815cce Fetching changes from the remote Git repository Fetching upstream changes from /srv/git/cucumber.git Commencing build of Revision 14627f9a6682b82a9b4d64172278a646da358c24 (origin/master) Checking out Revision 14627f9a6682b82a9b4d64172278a646da358c24 (origin/master) [workspace] $ /bin/sh -xe /tmp/hudson6604637626131848657.sh + cucumber --format junit --guess --out ./ /usr/lib64/ruby/gems/1.9.1/gems/json-1.7.5/lib/json/common.rb:155:in `encode': "\xD8" on US-ASCII (Encoding::InvalidByteSequenceError) from /usr/lib64/ruby/gems/1.9.1/gems/json-1.7.5/lib/json/common.rb:155:in `initialize' from /usr/lib64/ruby/gems/1.9.1/gems/json-1.7.5/lib/json/common.rb:155:in `new' from /usr/lib64/ruby/gems/1.9.1/gems/json-1.7.5/lib/json/common.rb:155:in `parse' from /usr/lib64/ruby/gems/1.9.1/gems/gherkin-2.11.2/lib/gherkin/i18n.rb:14:in `' from /usr/lib64/ruby/gems/1.9.1/gems/gherkin-2.11.2/lib/gherkin/i18n.rb:6:in `' from /usr/lib64/ruby/gems/1.9.1/gems/gherkin-2.11.2/lib/gherkin/i18n.rb:5:in `' from /usr/lib64/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' [DEBUG] Skipping watched dependency update for build: CucumberTests #168 due to result: FAILURE Finished: FAILURE 

此项目中的每个文件都标有:

 #!/bin/env ruby # encoding: utf-8 # -*- coding: utf-8 -*- 

我该怎么办?

您的环境LC编码存在问题。

Linux的

 export LANG=en_US.UTF-8 

OS X(前Mnt。狮子)

 export LC_CTYPE=en_US.UTF-8 

OS X(Mnt.Lion和更高版本)

 export LC_ALL=en_US.UTF-8 

通过添加以下代码,可以在Ruby代码中自行修复该问题:

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