>백엔드 개발 >PHP 문제 >PHP 메모장에 잘못된 코드가 있습니다.

PHP 메모장에 잘못된 코드가 있습니다.

王林
王林원래의
2019-09-26 11:49:082916검색

PHP 메모장에 잘못된 코드가 있습니다.

PHP는 메모장에 잘못된 문자를 씁니다

PHP를 사용할 때 fwrite를 사용하든 file_put_contents를 사용하든 관계없이 많은 사람들이 잘못된 파일을 접했다고 생각합니다. 어쩌면 먼저 인코딩해서 해결하려고 하겠지만, UTF-8 인코딩으로 변환했는데도 최종 결과가 이상적이지 않은 경우가 많습니다...

그럼 근본 원인은 무엇일까요? 단지 헤드 BOM이 부족할 뿐입니다(물론 이는 확실히 Js BOM을 의미하지는 않습니다).

BOM

BOM이 언급되어 있어서 이 친구를 잘 모르는 학생들도 있을 수 있으니 여기서 간단히 설명드리면 생략하겠습니다. Windows에서 메모장과 같은 프로그램을 사용하여 UTF-8 형식으로 텍스트 파일을 저장하면 메모장은 파일 헤더 앞에 몇 개의 보이지 않는 문자(EF BB BF)를 추가합니다. 이는 소위 BOM(바이트 순서)입니다. 표시). ).

파일 열기에 "EF BB BF" 여러 개의 보이지 않는 문자가 포함되어 있는 한 메모장에 저장된 파일에만 국한되지 않습니다(16진수는 xEFxBBxBF여야 하며 바이너리로 파일을 편집할 때 표시됨). 이는 관례와 같습니다. 시스템에서 이 내용을 보면 파일이 UTF-8로 인코딩된 것으로 간주합니다.

이 때문에 파일에 BOM이 없으면 사용자에게 제공하는 파일이 깨질 수 있습니다.

PS: 실제로 BOM은 HTML의 charset 속성과 식별자 역할을 하는 XML의 인코딩 속성으로 이해할 수 있습니다.

해결책:

그러면 PHP에서 BOM을 출력하는 방법은 무엇입니까?

모든 내용이 출력되기 전에 출력하는 것이 정답입니다.

print(chr(0xEF).chr(0xBB).chr(0xBF));

물론 파일을 생성하는 경우 다음 두 가지가 될 수 있습니다.

fwrite($file, chr(0xEF).chr(0xBB).chr(0xBF));

file_put_contents($file, chr(0xEF).chr(0xBB).chr(0xBF));

추천 튜토리얼: PHP 비디오 튜토리얼

위 내용은 PHP 메모장에 잘못된 코드가 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.