How to fix Ruby script which fails with encoding e

2020-04-08 11:16发布

I get the following error when running a project with:

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

This is the error:

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 `<class:I18n>'
from /usr/lib64/ruby/gems/1.9.1/gems/gherkin-2.11.2/lib/gherkin/i18n.rb:6:in `<module:Gherkin>'
from /usr/lib64/ruby/gems/1.9.1/gems/gherkin-2.11.2/lib/gherkin/i18n.rb:5:in `<top (required)>'
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

Every single file in this project is marked with:

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

What can I try?

2条回答
够拽才男人
2楼-- · 2020-04-08 11:34

There are issues with your environments LC encodings.

Linux

export LANG=en_US.UTF-8

OS X (pre Mnt. Lion)

export LC_CTYPE=en_US.UTF-8

OS X (Mnt. Lion and later)

export LC_ALL=en_US.UTF-8
查看更多
欢心
3楼-- · 2020-04-08 11:34

The problem can be also fixed in Ruby code it-self, by adding the following code:

Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
查看更多
登录 后发表回答