我现在有一个UTF8与Jenkins结合的问题。我们的项目是用PHP构建的,我们使用Ubuntu服务器作为服务器。
现在的问题是编码不能正确工作。我们在不同的环境中都工作,但只有我们的jenkins服务器失败了。
为了测试这一点,我在单元测试中做了一些测试输出。我让它运行并读取输出。这是脚本和响应:
<?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。= UTF8编码…"
所有选项都无效。我已经运行了测试,并以我们的jenkins用户登录,以验证它是否是他的工作空间,但也不是。
谁能给我指个好方向吗?只有这是我们和CI开发之间的问题。我们发现Jenkins编码是正确的。MySQL数据库的编码是错误的。不幸的是。