>백엔드 개발 >PHP 문제 >PHP가 txt에 잘못된 문자를 씁니다.

PHP가 txt에 잘못된 문자를 씁니다.

王林
王林원래의
2019-09-17 13:05:334403검색

PHP가 txt에 잘못된 문자를 씁니다.

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의 인코딩 속성으로 이해할 수 있습니다.

Solution:

그래서 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가 txt에 잘못된 문자를 씁니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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