【问题标题】:Can't resolve incompatible character encoding in Jenkins无法解决 Jenkins 中不兼容的字符编码
【发布时间】:2017-07-10 20:57:28
【问题描述】:

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

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

一直困扰着我的错误是:

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

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

$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 中导出系统语言环境。

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

【问题讨论】:

    标签: jenkins character-encoding ruby-2.3


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多