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 중국어 웹사이트의 기타 관련 기사를 참조하세요!