-2

我正在尝试运行来自 Jenkins 的 Cucumber (Ruby 2.3) 测试套件,用于测试 2-4 字节 UTF-8 字符是否是组的有效名称。

我尝试了许多解决方案,并且一直在寻找几天试图找到与我相关的问题。

一直困扰我的错误是:

incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)

这指的是我试图向我正在创建组的机器上的 CLI 发送 ssh 命令的行:

$mymachine.cli_ssh.exec!("config group create --name='#{group_name}'")

命令中exec!()存在的位置:

command.force_encoding("UTF-8")

该错误仅在我发送 2-4 字节 UTF-8 字符时发生,例如:

组 'abcd'不会导致错误,组 'ЯЯЯ'确实会导致错误

问题:

在我的本地 Ubuntu 机器(Ruby 2.2.1)以及我所在地区的其他机器上运行这个脚本非常好。(这就是为什么我认为没有必要提供比给定更多的代码)。我知道随着跳转到 Ruby 2.0,编码到 UTF-8 发生了变化,但是两台机器都过去了,所以我认为这不是问题。

我已经尝试在 Jenkins 机器上将系统语言环境设置为 en_US.UTF-8 作为语言环境系统变量和 /.bashrc 文件。我在哪里没有看到设置为 ASCII-8BIT 的编码变量。

我还尝试在脚本执行之前从 Jenkins shell 中导出系统语言环境。

我需要一些答案,或者一些可以帮助我解决这个问题的方向。

4

1 回答 1

0

该问题已通过更新 Jenkins 系统上的所有 Ruby gem 得到解决。尽管某些 gem 在技术上与 Jenkins 机器运行的 Ruby 版本兼容,但它们很可能已经过时,因此可能存在非 UTF8 的 Ruby 代码。

如果您将来遇到此问题,我建议您确保所有 gem 和 ruby​​ 版本在您的 Jenkins 机器和工作机器之间保持一致。

于 2017-08-03T22:23:32.133 回答