Character-Encoding

Jenkins 中不兼容的字元編碼無法解決

  • July 9, 2018

我正在嘗試執行來自 Jenkins 的 Cucumber (Ruby) 測試套件,用於測試 2-4 字節 UTF-8 字元是否是組的有效名稱。

我嘗試了許多解決方案,並且一直在尋找幾天試圖找到與我相關的問題。

一直困擾我的錯誤是:

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

這指的是我試圖將 ssh 命令發送到我正在創建組的 FreeBSD 機器上的 CLI 的行:

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

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

command.force_encoding("UTF-8")

該錯誤僅在我發送 2-4 字節 UTF-8 字元時發生,例如:

組 ‘abcd’不會導致錯誤,組 ‘ЯЯЯ’確實會導致錯誤

問題:

在我的本地 Ubuntu 機器以及我所在地區的其他機器上執行這個腳本非常好。(這就是為什麼我認為沒有必要提供比給出更多的程式碼)

我已經嘗試在 Jenkins 機器上將系統語言環境設置為 en_US.UTF-8 作為語言環境系統變數和 /.bashrc 文件。我在哪裡沒有看到設置為 ASCII-8BIT 的編碼變數。

我還嘗試在腳本執行之前從 Jenkins shell 中導出系統語言環境。

我需要一些答案,或者一些可以幫助我解決這個問題的方向。

該問題已通過更新 Jenkins 系統上的所有 Ruby gem 得到解決。儘管某些 gem 在技術上與 Jenkins 機器執行的 Ruby 版本兼容,但它們很可能已經過時,因此可能存在非 UTF8 的 Ruby 程式碼。

如果您將來遇到此問題,我建議您確保所有 gem 和 ruby​​ 版本在您的 Jenkins 機器和工作機器之間保持一致。

引用自:https://unix.stackexchange.com/questions/377524