UTF-8 로 만들고 저장해서 검사하면 이렇게 오류가 납니다.
http://validator.w3.org/check?uri=http% ... yus.net%2F
euc-kr 로 바꾸면 아무 이상없구요..
왜 그런건지 모르겠습니다.
php 구문을 약간 썼는데 그것때문인가...
이거 뭐가 잘못되었단 것인지....
-
- 해커
- Posts: 1146
- Joined: 2004 01 15 20:06 36
-
- Posts: 7
- Joined: 2006 06 22 00:18 05
- Contact:
좀 이상한데?
초보다 보니 무슨 말씀이신지 도무지 이해가 안갑니다.빛알갱이 wrote:뭘로 편집하셨나요? 파일 선두에 "UTF-8 BOM"이 두 개나 들어 있습니다. 하나 있는 것은 상관 없지만, 두 개 들어 있기 때문에 적법하지 않은 파일이 되어 버렸습니다. DOCTYPE 선언이 파일의 최선두에 나와야 하는데 현재는 U+FEFF가 최선두(처음에 나오는 UTF-8 BOM은 UTF-8을 나타내는 것이므로 파싱할 때에는 제거됩니다. 하지만, 두번째 나오는 U+FEFF - UTF-8로는 0xef 0xbb 0xbf의 세 바이트-는 문서의 일부로 간주됩니다. )에 있기 때문에 에러가 납니다.
좀 쉽게 풀어서 설명해주시면 고맙겠습니다.
- Channy
- 해커
- Posts: 1006
- Joined: 2002 03 26 17:41 59
- Location: 아름다운 제주
- Contact:
-
- 해커
- Posts: 691
- Joined: 2004 08 11 22:14 59
- Contact:
-
- 해커
- Posts: 1146
- Joined: 2004 01 15 20:06 36
님의 경우에는 DOCTYPE 앞에 줄이 하나 있는 게 아니라 글자가 한 자 들어 있습니다. 그 글자가 Unicode의 U+FEFF(한글 '가'는 U+AC00입니다.)이고요. 그 필요 없는 글자를 지워야 합니다. 지웠다고 하시지만, 현재 대류닷컴에 올려진 파일에는 여전히 그 글자가 남아 있습니다.daerew wrote:그래도 결과는 같으네요....ㅡ,.ㅜ차니 wrote:쉽게 말해 doctype 앞에 있는 빈 줄을 삭제하라는 이야기입니다.
doctype앞에는 공백이나 빈줄이 있으면 안됩니다.
제거하는 방법:
1. 바이너리 편집기 등을 써서 앞의 세 바이트를 지운다. 그 글자는 UTF-8에서 세 바이트로 표현됩니다.
2. '보이지 않는 글자'나 표시할 글꼴이 없는 글자를 코드 포인트로 보여 주거나 '?' 혹은 '.' 등으로 보여 주는 편집기를 찾아서 처음에 나오는 그 글자를 제거한다. 예를 들어, Windows용 vim(http://www.vim.org)로 파일을 연 뒤에 ':set encoding=utf-8'을 치고 나면 맨 앞에 파란 색으로 '<feff>'라고 표시됩니다. 그 글자 위에 커서를 두고 'x'를 눌러서 삭제한 뒤에 ZZ를 눌러서 저장하세요. jedit (http://www.jedit.org)나 다른 편집기를 (요새는 UTF-8을 지원하는 윈도우즈용 편집기가 많습니다.) 써도 되고요.
앗 ... 대류닷컴의 문제가 되는 페이지를 보니 U+FEFF가 파일 선두에 두 개 있을 뿐 아니라 파일 중간에도 하나 있군요. 혹시, PHP에서 'include' 등을 사용해서 파일 두 개를 불러 들였나요? 그리고, 각각의 파일도 노트패드로 편집하셨나요? BOM(Byte Order Mark)를 붙일 것인지 말 것인지 지정할 수 있는 UTF-8 편집기에서 (몇 개 있는데, 지금 기억이 안 납니다. 제가 윈도우즈에서 UTF-8 편집을 할 일이 별로 없어서) 그 두 파일과 PHP 파일을 읽어 들인 후에 BOM을 붙이지 않고 다시 저장해 보십시오.
왜 UTF-8 BOM을 안 쓰는 게 좋은지 보여 주는 또다른 보기로군요.
--------------------------
아래를 읽어도 여전히 모른다고 하시겠지요? <http://www.unicode.org/>에 있는 glossary에서 용어의 정의를 찾아 보시면 좀더 이해하기 쉬울 것입니다.
그 글자는 바이트 오더가 파일 내용 해석에 중요한 차이를 주는 (바이트가 기본 단위가 아니고, 16비트나 32비트 워드가 기본 단위인) UTF-16, UTF-32 등의 파일 선두에 놓여서 Big Endian인지 Little Endian(이런 용어는 모른다고 하지 마시고, 검색해서 찾아 보세요. 예를 들어 http://www.unicode.org : glossary에서) 나타내 주는 Byte Order Mark(BOM)로 쓰입니다. 바이트가 기본 단위인 UTF-8에는 그런 게 필요 없지만, 노트 패드를 비롯한 Windows의 몇몇 편집기는 기존에 쓰던 CP949(한국어 윈도우의 경우)와 구별하기 위해서 UTF-8로 저장하면 맨 선두에 그것을 붙여 둡니다. 그런데, 어떤 까닭인지 님이 올린 파일은 그 글자가 한 자만 들어 있어야 하는데, 두 개가 파일 맨 앞에 들어 있습니다. 맨 앞의 그 글자는 UTF-8 BOM(어폐가 있지만, 어쨌든 쓰이는 말입니다)이므로 무시하지만 (없는 것이나 마찬가지), 그 다음에 나오는 그 글자는 무시하지 않습니다. 따라서, DOCTYPE 선언 앞에 글자가 하나 있으므로, 적법하지 않은 문서가 됩니다.
Who is online
Users browsing this forum: No registered users and 1 guest