2012-06-21 3 views
0

에서 인 print_r()를 올바르게 중국어 문자 보여 주지만,이 파일에 기록 내가 메모장, 워드 패드 및 Microsoft Word에서 열려고 된 후에는이 美元共付é¡Â計劃유효 중국어

 print_r($contents); 
     exit; 
     if (file_put_contents($this->outPath.$dataFile, $contents) === false) { 
      $this->_throwError('Error: Unable to write data file: "'.$this->outPath.$dataFile.'"'); 
     } 
로 나타난다 파일을 쓸 수 없습니다

는 또한 운없이 시도했습니다 :

 $handle = fopen($this->outPath.$dataFile, "w+b"); //binary mode prevents any conversion 
     fwrite($handle, $contents); 
     fclose($handle); 

텍스트는 유효한 UTF-8 그래서 나는이 문제를 될 수있는 것을 확실 해요입니다

+0

이 답변이 도움이됩니까? http://stackoverflow.com/questions/4839402/how-to-write-file-in-utf-8-format – aleung

+0

"유효한 중국어"라는 개념을 좋아합니다. :) – Kristian

답변

1

간단한 메모장, 워드 패드 및 Word는 모두 M이다 icrosoft 제품인 은 인코딩이 좋지 않으므로 은 UTF-8 인코딩 파일이 BOM으로 시작한다고 예상합니다. BOM을 포함하지 않으면 인코딩을 올바르게 인식하지 못하고 파일을 잘못 해석합니다.

BOM을 UTF-8 인코딩 파일에 추가하는 것은 일반적으로 권장되지 않습니다. Microsoft 유니버스 만 필요로하거나 선호하는 것 같습니다. 어떤 것이 더 나쁜지 결정할 필요가 있습니다. BOM을 포함 시키거나 Word/Note (수동) 파일을 올바른 인코딩으로 수동으로 열어야 만 문제가 발생할 가능성이 있습니다.

$bom = "\xEF\xBB\xBF"; 

앞에 추가 그것은 당신의 파일 : PHP에서

BOM이 단순히 이것이다.

+1

"악명 높은 인코딩과 함께"비트가 중복됩니다. . * 실행 * –