이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 6768|회답: 0

UTF-8 인코딩 문제 BOM이 자세히 설명되어 있습니다

[링크 복사]
게시됨 2014. 10. 30. 오후 5:38:44 | | |
워드프레스에서 주의해야 할 UTF-8 BOM 문제
저는 아주 초반에 문제를 겪었는데, 특정 플러그인을 설치한 후 활성화를 클릭하면 흰색 화면이 나타났습니다. 저는 그 이유를 아직 파악하지 못했고, 이전 해결책은 중국어 문자가 없으면 파일을 ASCII 코드로 직접 전송하는 것이었는데, 이 문제는 일반적으로 해결할 수 있습니다. 오늘 형을 위해 블로그를 받았을 때, 이런 상황이 또 발생했습니다. 오랫동안 조사한 끝에 마침내 답을 찾았습니다.

유니코드 명세에는 BOM 개념이 있습니다. BOM - 바이트 순서 표시(Byte Order Mark)입니다. BOM에 대한 안내는 여기에서 확인하세요:

UCS 코드에는 "ZERO WIDTH NO-BREAK SPACE"라는 문자가 있으며, 이는 FEFF로 인코딩됩니다. FFFE는 UCS에서 존재하지 않는 문자이므로 실제 전송에는 나타나지 않아야 합니다. UCS 명세는 바이트 스트림을 전송하기 전에 "ZERO WIDTH NO-BREAK SPACE"라는 문자를 전송할 것을 권장합니다. 이렇게 하면 수신기가 FEFF를 받으면 바이트 스트림이 빅 엔디언임을 나타냅니다; FFFE가 수신되면 바이트스트림이 리틀-엔디언임을 나타냅니다. 따라서 "ZERO WIDTH NO-BREAK SPACE"라는 문자는 BOM이라고도 불립니다.

UTF-8은 바이트 순서를 표시하기 위해 BOM을 요구하지 않지만, 인코딩 방식을 나타내기 위해 BOM을 사용할 수 있습니다. "ZERO WIDTH NO-BREAK SPACE"라는 문자의 UTF-8 인코딩은 EF BB BF입니다. 수신기가 EF BB BF로 시작하는 바이트 스트림을 받으면 UTF-8 인코딩임을 알 수 있습니다.

윈도우는 BOM을 사용해 텍스트 파일의 인코딩 방식을 표시합니다.

또한 유니코드 웹사이트의 FAQ-BOM에서는 BOM을 자세히 설명합니다. 공식적인 자연권위는 영어로 되어 더 번거로운 편입니다.

UTF-8 인코딩 파일에서는 BOM이 3바이트를 차지합니다. Notepad로 텍스트 파일을 UTF-8 인코딩으로 저장한다면, UE로 파일을 열고 16진수 편집 상태로 전환하면 앞부분의 FFFE를 볼 수 있습니다. 이 방법은 UTF-8 인코딩 파일을 식별하는 좋은 방법이며, 소프트웨어는 BOM을 사용해 파일이 UTF-8 인코딩되었는지 확인하고, 많은 소프트웨어가 가져오기 파일에 BOM이 있어야 한다고 요구합니다. 하지만 여전히 BOM을 인식하지 못하는 소프트웨어가 많습니다. 파이어폭스를 조사할 때, 초기 버전에서는 확장 프로그램이 BOM을 가질 수 없다는 것을 알고 있었지만, 파이어폭스 1.5 이후 버전에서는 BOM을 지원하기 시작했습니다. 이제 PHP도 BOM을 지원하지 않는다는 걸 알게 됐어요.

PHP는 BOM을 고려하지 않고 설계되었기 때문에, UTF-8 인코딩 파일 시작 부분의 BOM의 세 문자를 무시하지 않습니다. 반드시
Bo-Blog 위키에서 본 것처럼, PHP를 사용하는 Bo-Blog도 BOM에 대해 어려움을 겪고 있습니다. 또 다른 문제가 언급됩니다: "COOKIE 전송 메커니즘의 한계로 인해, 이미 BOM이 있는 파일에서는 COOKIE를 보낼 수 없습니다(PHP가 이미 COOKIE가 전송되기 전에 파일 헤더를 보냈기 때문입니다). 따라서 로그인 및 로그아웃 기능이 무효합니다. COOKIE와 SESSION에 의존하는 모든 함수는 유효하지 않습니다. 이것이 워드프레스 백그라운드에 빈 페이지가 있는 이유일 텐데, 실행된 파일마다 BOM이 포함되어 있고, 세 문자 모두 전송되어 쿠키와 세션에 의존하는 기능이 실패하기 때문입니다.

해결책은 영어 문자(또는 ASCII 인코딩 문자)만 포함된 파일을 ASCII 코드로 저장하는 것입니다. UE와 같은 편집기를 사용 중이라면, File->Convert->UTF-8을 ASCII로 클릭하거나 Save As에서 ASCII 인코딩을 선택하세요. 만약 DOS 형식의 줄로 끝난다면, 메모장으로 열어 '다른 이름으로 저장'을 클릭한 후 ASCII 인코딩을 선택할 수 있습니다. 중국어 문자가 포함되어 있다면, UE의 '이름으로 저장' 기능을 사용해 "UTF-8 no BOM"을 선택할 수 있습니다. 아래 이미지를 참고해 주세요:

Bo-Blog 위키의 지침에 따르면: Editplus는 GB로 저장한 후 UTF-8로 저장해야 합니다. 하지만 이 작업을 할 때는 GBK 인코딩에 포함되지 않은 모든 문자가 손실될 수 있으니 주의하세요. 파일에 비중국어 문자가 있다면 이 방법을 사용하지 마세요. (이 작은 점에서 보면, UE - UltraEdite-32가 확실히 Editplus보다 훨씬 낫습니다. Editplus는 너무 가볍습니다.)

또 다른 방법은 워드프레스에서 제공하는 파일 편집기를 사용하는 것입니다. 이 방법은 제한이 없으며, 모두가 워드프레스를 사용하고 있으니 별도의 편집기를 다운로드할 필요도 없습니다. 먼저, ftp에서 편집하고 싶은 파일의 쓰기 권한을 켜고, WordPress 백그라운드 > 관리 > 파일 편집기를 입력한 뒤 파일 편집 경로를 입력한 후 파일 편집을 클릭하세요. 편집 화면에 처음 세 글자가 보이지 않지만, 괜찮습니다. 전체 파일의 첫 글자 앞에 커서를 위치시키고 백스페이스 키를 누르면 됩니다. 좋아요, 파일 업데이트(Update File)를 클릭하고 ftp에서 새로고침하면 파일이 3바이트 작아진 걸 볼 수 있고, 그러면 끝입니다.

마지막으로, 이 문제는 큰 문제입니다. 자신의 플러그인을 작성하고, 다른 사람의 플러그인을 자신의 용도로 편집하며, 템플릿을 수정해야 하는 모든 분들(이 부분은 모두에게 필요할 것으로 추정됨)은 위 지식을 이해하는 것이 문제가 생겼을 때 압도당하지 않도록 하는 것이 가장 좋습니다.





이전의:초등학생들이 하루를 즐기며 몇 초 만에 모든 걸 죽이는 걸 지켜보세요! (최신 플레이어 오리지널)
다음:뤄용하오는 "2500대 이하의 해머 휴대폰은 손주다"고 답했다.
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com