Character-Encoding
Jenkins 中不兼容的字元編碼無法解決
我正在嘗試執行來自 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 機器和工作機器之間保持一致。