我目前在与 Jenkins 结合使用 UTF8 时遇到问题。我们的项目是用 PHP 构建的,我们使用 Ubuntu 服务器作为服务器。
现在是编码无法正常工作的问题。我们在不同的环境中一切正常,但只有我们的詹金斯服务器出现故障。
为了测试这一点,我在单元测试中做了一些测试输出。这让我运行并读取输出。这是脚本和响应:
<?php
$str = 'téëst';
var_dump(
array(
mb_http_input(),
mb_http_output(),
mb_detect_order(),
utf8_decode($str),
utf8_decode(utf8_decode($str)),
utf8_encode($str),
utf8_encode(utf8_encode($str)),
$str,
mb_detect_encoding($str)
)
);
?>
这是我们的直播环境/暂存环境和开发环境:
array(9) {
[0] =>
bool(false)
[1] =>
string(4) "pass"
[2] =>
array(2) {
[0] =>
string(5) "ASCII"
[1] =>
string(5) "UTF-8"
}
[3] =>
string(5) "t��st"
[4] =>
string(5) "t??st"
[5] =>
string(11) "téëst"
[6] =>
string(19) "téëst"
[7] =>
string(7) "téëst"
[8] =>
string(5) "UTF-8"
}
如您所见,可以正常使用字符串,无需转换。但现在在 Jenkins 环境中,它与我们的开发环境在同一台计算机上运行,一切正常。
这是它的结果:
[exec] array(9) {
[exec] [0] =>
[exec] bool(false)
[exec] [1] =>
[exec] string(4) "pass"
[exec] [2] =>
[exec] array(2) {
[exec] [0] =>
[exec] string(5) "ASCII"
[exec] [1] =>
[exec] string(5) "UTF-8"
[exec] }
[exec] [3] =>
[exec] string(5) "t??st"
[exec] [4] =>
[exec] string(5) "t??st"
[exec] [5] =>
[exec] string(11) "t????????st"
[exec] [6] =>
[exec] string(19) "t????????????????st"
[exec] [7] =>
[exec] string(7) "t????st"
[exec] [8] =>
[exec] string(5) "UTF-8"
[exec] }
如上所示,所有编码选项都失败了,正常的字符串也是如此。
我已经尝试过不同的东西,例如:
- 将 pom.xml 文件中的编码更改为 UTF-8。
- 将 JAVA_ARGS 更改为: JAVA_ARGS="-Dfile.encoding=UTF-8"
- 添加 JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"
- 添加 JENKINS_TOOL_OPTIONS="-Dfile.encoding=UTF8"
- 添加 JENKINS_ARGS="-Dfile.encoding=UTF8 ...."
这些选项都不起作用。我已经运行了测试,也以我们的 jenkins 用户身份登录,以验证它是否是他的工作空间,但也不是。
有人可以帮助我朝好的方向发展吗?只有这在我们和 CI 开发之间。
提前致谢。