2013-05-22 1 views
0

정말 이상한 문제가 있습니다.UTF-8 WITH BOM 포함 파일에 이상한 오류가 발생했습니다.

"UTF-8"이 포함 된 파일을 포함하려고 할 때마다 오류가 발생합니다. 스크립트가 완전히 실행되어 올바른 텍스트를 반환하더라도. 나는이 같은 코드가있을 때

가 :

include_once $fn; 
echo json_encode("ALL IS FINE"); 
die(); 

은 아약스 응답이 그것을 해석하는 방법을

(나는 ini_set('default_charset', 'utf-8');을)이 예에서

봐는 ... 코드는 다음과 같다 : (오류는 있지만 응답 텍스트는 여전히 동일하므로 실제로는 항상 올바른 텍스트이며 스크립트는 완전히 실행됩니다.) enter image description here

하고이 같은 코드가있을 때 :

echo json_encode("ALL IS FINE"); 
die(); 
include_once $fn; 

아약스 응답 그것을 해석하는 방법을 : enter image description here

나는 "UTF-8로 ANSI"사용하는 경우 나에서 오류를 제거 할 수 있습니다 메모장 + + 기본적으로 BOM이없는 UTF-8을 의미합니다. 하지만 나는 그것을 utf8에 갖고 싶어.

+0

입니다. 그렇기 때문에 BOM 때문에 문제가 있다는 것을 알고 계시 겠지만 여전히 사용하고 계십니까? 테스트 해 본 적이 없지만 솔루션 일 수 있습니다. [zend.multibyte] (http://www.php.net/manual/en/ini.core.php#ini.zend.multibyte) (PHP> = 5.4) –

+0

그래서 PHP 파일 자체를 참조하는 바이트 순서 표시가 있습니까? – Orangepill

+0

물론 작동하지 않으면 사용하지 않는 것이 좋습니다. 그러나 그것은 그것이 나에게 방해가된다. 네, 모든 파일에 있습니다. – netigger

답변

1

php에서 BOM과 함께 utf8을 사용하면 문제가 발생합니다. 실제로 아약스 응답 무엇을 얻을 귀하의 사건에 은 다음과 같습니다

BOM"ALL IS FINE" 

자바 스크립트는 더 이상 유효한 JSON하지 않기 때문에 그것을 해독하는 데 실패 때문에 BOM이 따옴표를 벗어났습니다.

또한 최신 PHP 프레임 워크를 사용할 때 BOM에 문제가 발생합니다. 대부분은 출력 버퍼링을 사용하여 컨텐트를 조작합니다. 이 경우 BOM의 가장 일반적인 오류는

Warning: Cannot modify header information - headers already sent 
관련 문제