PHP Hudson / Jenkins编码问题


PHP Hudson / Jenkins encoding issue

我现在有一个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数据库的编码是错误的。不幸的是。