2014-05-01 3 views
1

저는 현재 Jenkins와 UTF8 문제를 맺고 있습니다. 우리 프로젝트는 PHP로 구축되었으며 서버 우분투 서버로 사용합니다.PHP Hudson/Jenkins 인코딩 문제

이제 인코딩이 제대로 작동하지 않는 문제가 있습니다. 다른 환경에서는 모든 것이 작동하지만 젠킨스 서버 만 실패합니다.

테스트하려면 unittest에서 몇 가지 테스트 출력을 만들었습니다. 이것은 내가 실행하고 출력을 읽을 수 있습니다. 이 스크립트 및 응답입니다 :

<?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 = UTF8"
  • 하는 JAVA_TOOL_OPTIONS의 = 추가 "- - Dfile.encoding = UTF8을"
  • 이 JENKINS_TOOL_OPTIONS = 추가 "Dfile.encoding = UTF8을"
  • 추가 JENKINS_ARGS = "- Dfile.encoding = UTF8 ...."

옵션이 작동하지 않습니다. 나는 또한 jenkins 사용자로 로그인 한 테스트를 실행 해 자신의 작업 영역인지 여부를 확인했습니다.

누군가 나를 좋은 방향으로 도울 수 있습니까? 이것 만이 우리와 CI 개발 사이에 있습니다.

미리 감사드립니다.

+0

파일이 제대로 인코딩되었는지 확인하십시오. (첫 번째 소스 코드의 출처 인 파일). – Seti

+0

IDE 인코딩에서 볼 수있는 모든 파일에서 : UTF-8, inca -L none filename.php 일 때, 7 비트 ASCII 문자를 얻습니다. –

답변

0

젠킨스 인코딩이 올바르다는 것을 알았습니다. MySQL 데이터베이스의 인코딩이 좋지 않았습니다. 운수 나쁘게.