문제

PHP include 함수를 사용할 때 include가 성공적으로 실행되지만, include 출력이 출력되기 전에 char도 출력하고 있습니다. char은 16진수 값 3F이고 그것이 어디에서 왔는지는 알 수 없습니다. 모든 포함에서 발생합니다.

처음에는 파일 인코딩인 줄 알았는데 별 문제는 아닌 것 같습니다.이를 시연하기 위해 테스트 케이스를 만들었습니다.(링크가 더 이상 작동하지 않습니다) http://driveefficiently.com/testinclude.php 이 파일은 다음 항목으로만 구성됩니다.

<? include("include.inc"); ?>

include.inc는 다음으로만 구성됩니다.

<? echo ("hello, world"); ?> 

그러나 출력은 다음과 같습니다. "?안녕, 세상아" 어디?임의의 값을 가진 문자입니다.내가 출처를 모르는 것이 바로 이 값이며 때로는 내 사이트를 약간 망가뜨리기도 합니다.

이것이 어디에서 올 수 있는지에 대한 아이디어가 있습니까?처음에는 파일 인코딩과 관련된 문제일 수도 있다고 생각했지만 문제는 아닌 것 같습니다.

도움이 되었습니까?

해결책

당신이 보고 있는 것은 UTF-8 바이트 순서 표시입니다:

BOM의 UTF-8 표현은 UTF-8을 처리할 준비가 되어 있지 않은 대부분의 텍스트 편집기와 웹 브라우저에서 ISO-8859-1 문자 로 나타나는 바이트 시퀀스 EF BB BF입니다.

Wikipedia의 바이트 순서 표시

PHP는 이러한 문자가 "숨겨져야" 한다는 사실을 이해하지 못하고 이를 일반 문자인 것처럼 브라우저에 보냅니다.이를 제거하려면 선행 BOM 없이 파일을 UTF-8로 저장할 수 있는 "적절한" 텍스트 편집기를 사용하여 파일을 열어야 합니다.

이 문제에 대한 자세한 내용은 여기에서 읽을 수 있습니다.

다른 팁

귀하의 웹 서버(또는 텍스트 편집기)에는 분명히 다음이 포함되어 있습니다. BOM 문서에.사이트의 인코딩을 명시적으로 Latin-1로 설정한 경우를 제외하고는 브라우저에 악성 문자가 표시되지 않습니다.그러면 두 개의(!) UTF-8 BOM이 보입니다.

/편집하다:있다는 사실에서 BOM BOM은 편집자가 파일 시작 부분에 실제로 포함했다고 결론을 내렸습니다.어떤 편집기를 사용하시나요?Visual Studio를 사용하는 경우 파일 메뉴에서 "다른 이름으로 저장..."이라고 말한 다음 "인코딩으로 저장..." 버튼을 선택해야 합니다.거기에서 "BOM 없는 UTF-8" 또는 이와 유사한 것을 선택합니다.

Firefox나 IE에서는 렌더링된 페이지에 표시되지 않지만 IE에서 소스를 보면 재미있는 문자를 볼 수 있습니다.

enter image description here

Linux 시스템에 있습니까?그런 식으로 3F를 제거할 수 있는지 확인하기 위해 vim 또는 sed를 찾아 교체할 수 있습니까?

Windows의 경우 메모장으로 include.inc를 열어 재미있는 문자가 표시되고 삭제할 수 있는지 확인하세요.

또한 포함된 코드를 복사하여 자체적으로 실행하면 어떤 일이 발생하는지 궁금합니다.

실제로 캐릭터 3F ~이다 물음표는 단지 ​​하나로 표시되는 것이 아닙니다.

Thomas와 동일한 결과를 얻었으며 물음표가 표시되지 않았습니다.

이론적으로는 웹 프록시에 문제가 있을 수 있지만 PHP 마크업에 잘못된 물음표가 있는 것으로 의심됩니다. 아마도 지금쯤 수정하여 문제를 볼 수 없을 것입니다.

알겠어요 hello, world 당신이 링크한 페이지에서.제가 보기에는 문제가 없습니다...

저는 Firefox 3.0.1과 Windows XP를 사용하고 있습니다.어떤 브라우저/OS를 실행하고 있나요?아마도 그게 문제일 수도 있겠네요.

또한 포함에서 코드를 복사하고 스스로 실행하면 어떻게되는지 궁금합니다.

표시:이것은 공유 호스팅 솔루션에 있으므로 파일에 대한 쉘 액세스를 얻을 수 없습니다.그러나 보시다시피 여기, 있으면 안되는 문자가 없으며 동일한 파일을 스크립트로 실행해도 이 문자가 생성되지 않습니다.(공유 호스팅 회사는 도움을 전혀 받지 못했으며 계속해서 브라우저 문제라고 말했습니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top