익스에서 xhtml 문서를 잘못 인식하는 문제

국내에 웹 사이트들이 웹 표준을 지키고 OS나 브라우저와 관계 없이 접근성을 향상 시키기 위한 사이트 버그 신고 및 문제 해결을 위한 게시판입니다.
Post Reply
박민권
해커
해커
Posts: 724
Joined: 2005 01 31 22:33 55
Location: 대한민국
Contact:

익스에서 xhtml 문서를 잘못 인식하는 문제

Post by 박민권 »

이거 오래전에 올라왔던 문제였던 것 같은데 기억이... ㅡㅡ;

xhtml 문서의 최상단에
<?xml version="1.0" encoding="euc-kr"?>
를 선언하면 DocType을 xhtml로 선언하여도 익스에서는 전용모드로 동작합니다.

이 부분에 대해서 차니님 혹은 빛알갱이님이 말씀하셨던게 있었던거 같은데 기억이 잘 안나네요.
hyeonseok
해커
해커
Posts: 691
Joined: 2004 08 11 22:14 59
Contact:

Post by hyeonseok »

utf-8 문서이면
<?xml version="1.0" encoding="utf-8"?>
를 생략해도 됩니다.

따라서 IE 에서 utf-8, utf-16 이외의 XHTML 문서를 표준 모드로 사용하는 것은 불가능 합니다. -o-;
박민권
해커
해커
Posts: 724
Joined: 2005 01 31 22:33 55
Location: 대한민국
Contact:

OTL

Post by 박민권 »

hyeonseok wrote:utf-8 문서이면
<?xml version="1.0" encoding="utf-8"?>
를 생략해도 됩니다.

따라서 IE 에서 utf-8, utf-16 이외의 XHTML 문서를 표준 모드로 사용하는 것은 불가능 합니다. -o-;
OTL 답변 감사합니다. ㅠ_ㅠ
빛알갱이
해커
해커
Posts: 1146
Joined: 2004 01 15 20:06 36

Post by 빛알갱이 »

hyeonseok wrote:utf-8 문서이면
<?xml version="1.0" encoding="utf-8"?>
를 생략해도 됩니다.

따라서 IE 에서 utf-8, utf-16 이외의 XHTML 문서를 표준 모드로 사용하는 것은 불가능 합니다. -o-;
XHTML 문서를 만들면서 굳이 UTF-8/UTF-16이 아닌 케케묵은 인코딩을 쓰지 말라는 MS의 "깊은" 뜻을 알아 줘야 할 듯 :-)
박민권
해커
해커
Posts: 724
Joined: 2005 01 31 22:33 55
Location: 대한민국
Contact:

ㅎㅎㅎ

Post by 박민권 »

빛알갱이 wrote:
hyeonseok wrote:utf-8 문서이면
<?xml version="1.0" encoding="utf-8"?>
를 생략해도 됩니다.

따라서 IE 에서 utf-8, utf-16 이외의 XHTML 문서를 표준 모드로 사용하는 것은 불가능 합니다. -o-;
XHTML 문서를 만들면서 굳이 UTF-8/UTF-16이 아닌 케케묵은 인코딩을 쓰지 말라는 MS의 "깊은" 뜻을 알아 줘야 할 듯 :-)
그런 뜻이 있었군요. ㅡㅡ)b
yser
서포터즈
서포터즈
Posts: 52
Joined: 2005 01 28 11:12 17
Contact:

Post by yser »

IE의 버그입니다.

의도된 버그인지는 모르겠으나, IE 는 DTD 앞에 어떠한 문자가 오면 반드시 IE 는 quirks mode 로 동작합니다. 즉 IE 를 standards mode 로 동작시키고 싶으시다면, DTD 앞에 어떠한 문자도 오면 안됩니다.

따라서 <?xml 로 시작하는 일련의 문자열이 DTD 선언 앞에 나오기 때문에, IE 는 그 문서를 quirks mode 로 처리하게 됩니다. padding 처리 등의 자잘한 차이점이 있다는 건 아실테고..

전에 w3.org 에서 관련 글을 보았었는데... 지금 찾질 못하겠네요.
xhtml dtd 선언에서 보면, w3c 에서는 분명히 dtd 앞에 xml 문서임을 뜻하는 <?xml ... 선언을 해주기를 _강력히 권장_ 하고 있습니다. 하지만 그 문서에서도 밝히듯이 IE 는 버그로 인해 선언하면 바라던 바를 이룰 수 없기에 IE 를 생각한다면 빼줘야 한다..는 식으로 언급되었던 기억이 얼핏 나네요. 표현은 조금 다를 수도 있습니다.

http://www.w3.org/International/articles/serving-xhtml/

여기도 본문 중에 섞여서 등장합니다..

그리고 xhtml 문서의 헤더를 뭘로 해야하는가.. 에 대한 문제도 미묘합니다.

application/xhtml
application/xhtml+xml
text/xml
text/xhtml

등등... 저도 몇 가지 문서를 읽어 봤는데 도통 헷갈려서....
현석님의 최근 블로그 글 중 저것에 대해 꽁수 처리한 걸 본 기억이 나네요.


p.s
위에 언급한 문제로 인해, 실무자들은 영문도 모른채 삽질을 반복합니다.

지금 국내 회사 사이트들 중에 보면 예전에 비해선 DTD 선언하는 곳들이 상당히 많이 늘었습니다. 그런데 DTD 는 맞더라도, include 하거나 또는 기타 업무의 협업 과정 중에 생긴 것 등으로 인해, DTD 위에 JS 스크립트가 들어가거나 주석이 있는 경우가 종종 발견 됩니다. 만약 개발 중에 DTD 선언 위에 문자 하나도 없이 출력 되었다면, IE 에서 테스트할 땐 분명히 standards mode 로 동작하므로, padding 등의 처리가 표준 모드에 맞게 처리되지만, 작업 중 DTD 상단에 주석 등의 문자가 포함된다면, 갑자기 기존에는 잘 맞던 이미지들이 조금씩 틀어지는 결과를 보게 됩니다. 디자이너는 당황하고, 다시 맞추느라 삽질을 합니다. (이유는 물론 알 리가 없습니다! 오 쉣, 그런 걸 누가 가르쳐 주던가요?? HA)

고치던 중에 프로그래머가 또 소스 수정하다가 DTD 앞에 문자가 사라진다거나 하면 또다시 틀어집니다. 네에, 이 후의 일은 굳이 말하지 않아도 아시리라 믿습니다(..야근할까용?). 테스트 결과 DTD 앞의 공백(엔터, 스페이스)은 IE에서 무시하는 걸 확인 했습니다. 즉 그냥 white space 에 해당하는 문자라면 상관이 없는 듯 합니다.

테이블로 짜면 그나마 padding 의 문제에서는 div 레이아웃 보단 덜 영향을 받을 수도 있겠지만, 여하튼 국내 실무자는 90% 이상이 이 문제를 모르기 때문에, 오늘도 끝없는 삽질은 반복됩니다. 그나마 이 문제를 인지하고 있는 경우라면 굉장히 다행입니다.
Last edited by yser on 2005 07 25 14:59 42, edited 4 times in total.
yser
서포터즈
서포터즈
Posts: 52
Joined: 2005 01 28 11:12 17
Contact:

Post by yser »

hyeonseok wrote:utf-8 문서이면
<?xml version="1.0" encoding="utf-8"?>
를 생략해도 됩니다.

따라서 IE 에서 utf-8, utf-16 이외의 XHTML 문서를 표준 모드로 사용하는 것은 불가능 합니다. -o-;
이 부분이 잘 이해가 안가는데...
xhtml 문서의 인코딩을 euc-kr 로 저장해서 출력하면 잘 되지 않던가요?
박민권
해커
해커
Posts: 724
Joined: 2005 01 31 22:33 55
Location: 대한민국
Contact:

삽질

Post by 박민권 »

yser wrote: p.s
위에 언급한 문제로 인해, 실무자들은 영문도 모른채 삽질을 반복합니다.

지금 국내 회사 사이트들 중에 보면 예전에 비해선 DTD 선언하는 곳들이 상당히 많이 늘었습니다. 그런데 DTD 는 맞더라도, include 하거나 또는 기타 업무의 협업 과정 중에 생긴 것 등으로 인해, DTD 위에 JS 스크립트가 들어가거나 주석이 있는 경우가 종종 발견 됩니다.
맞는 말씀인 것 같습니다. 영문 모를 삽질.
저도 아무생각 없이 dtd도 선언 안하고 js가 <html>위에 나타나는등 괴상한 코드를 작성하다가 표준을 알게되고 부터 프로그램을 계속 수정해 나갔었습니다.

복사그리고붙여넣기 개발자들은 프로그램 끼워넣다가 영문도 모른채 삽질을 하게되겠죠.
제가 모개발자에게 표준에 대한 자료와 불여우 설치등을 해주었는데 어느날 가보니 불여우는 싹 지워지고 코드에 발전은 없더군요. ㅡㅡ;

자신이 만든 사이트가 불여우에서 다 깨져버릴경우
1. 원인을 찾아 문제를 해결한다.
2. 불여우를 지워 잘못을 눈에 감추고 익스에 안주한다.
이 두가지 타입으로 나누어 지게 되는 것 같습니다.

'에휴~ 모르는거 있으면 아는한 다 가르쳐 줄테니 언제든 물어보라고 했건만... ㅠ_ㅠ'
hyeonseok
해커
해커
Posts: 691
Joined: 2004 08 11 22:14 59
Contact:

Post by hyeonseok »

yser wrote: 이 부분이 잘 이해가 안가는데...
xhtml 문서의 인코딩을 euc-kr 로 저장해서 출력하면 잘 되지 않던가요?
utf-8 이나 utf-16 이 아니면
<?xml version="1.0" encoding="euc-kr"?>
선언을 DTD 선언 위에서 해주어야 하기 때문에 표준모드 랜더링을 사용 할 수 없다는 말이었습니다. euc-kr 을 못쓰는게 아니라 euc-kr 을 쓰면 원칙적으로는 IE standards 모드를 쓸 수 없게 되는 거를 말한 것이었습니다. (저는 무시하고 쓰고 있지만요. mime-type 도 text/html 로...--; )

다 아시면서~ ;)
빛알갱이
해커
해커
Posts: 1146
Joined: 2004 01 15 20:06 36

Post by 빛알갱이 »

yser wrote:IE의 버그입니다.

의도된 버그인지는 모르겠으나, IE 는 DTD 앞에 어떠한 문자가 오면 반드시 IE 는 quirks mode 로 동작합니다. 즉 IE 를 standards mode 로 동작시키고 싶으시다면, DTD 앞에 어떠한 문자도 오면 안됩니다.
으... smiley는 괜히 붙인 게 아닌데... 당연히 (매우 잘 알려진) 버그지요. 하지만, 그 버그가 XHTML 문서를 만들면서까지 굳이 케케묵은 EUC-KR과 같은 인코딩을(게다가 실제로는 Windows-949를 쓰면서 거짓말로 EUC-KR이라고 하는 더 나쁜 경우도 있지요) 고집하는 이들로 하여금 UTF-8/UTF-16을 쓰게 '강제'하는 효과가 있다면 IE의 버그 중에 그 버그는 '괜찮은' 놈이라고 할 수도 있겠지요....
yser
서포터즈
서포터즈
Posts: 52
Joined: 2005 01 28 11:12 17
Contact:

Post by yser »

^^;

>당연히 (매우 잘 알려진) 버그지요.

정말로 매우 잘 알려졌나요? 국내에선 모르는 사람이 태반일 거 같더군요.
저도 전혀 몰랐었던게 불과 몇 개월 전이었습니다. 이것 저것 하다보니 뭔가 이상하다 했는데 이쪽에 관심이 있던 분이 가르쳐 주더군요. 어디서 이 증상을 설명하는 우리말 사이트는 한 군데도 본 적이 없습니다.

euc-kr 은 앞으로도 많이 쓰일 거 같고.. 아쉽긴 하지만, 사실상 튜토리얼이 없는 이상... 유니코드 = UTF-16 와 같은 식으로 착각하는 사람이 아직도 많으니까요. 항상 과거의 잔재가 문제죠. UTF-8 로 갑시다! 하고 앞에서 지휘하려고 해도 뒤에선 야근에 딴짓에 회의에 살림에 딴거하고 살기 바쁜 듯 하니, 기존 체제를 고수하려는 것도 어쩔 수 없는가 싶기도. BOM 이 헤더 관련으로 문제를 일으킬 때 왜 그런지조차 모르는 경우도 봤고, 그걸 가르쳐주는 국내 사이트도.. 사실상 없죠. 결국 영어 독해를 잘 하는 수 밖에...

p.s
여담이지만, ..전 phpbb 의 스마일리가 왠지 싫더군요.
사람에 따라 이모티콘이 받아들여지는 바가 다르기 마련이지만, 뭐랄까.. kldp 등지에서 논쟁하고 싸울 때 저 이모티콘이 가공할 폭력으로 쓰여지는 것을 많이 봐와서... (주로 비웃을 때 쓰이는 게 인상 깊어서 그런지 영...) 사람에 따라선 -_- 이게 꼴 보기 싫다는 사람도 있더군요.
빛알갱이
해커
해커
Posts: 1146
Joined: 2004 01 15 20:06 36

Post by 빛알갱이 »

yser wrote: >당연히 (매우 잘 알려진) 버그지요.

정말로 매우 잘 알려졌나요?
여기서 대상은 한국의 웹 관련 종사자 일반이 아니라, 이 글타래 참가자인데요. 그것을 쓴 맥락에서 버그라는 사실은 당연히 안다는 가정이 깔려 있다는 얘기입니다. 알고 뭐고를 떠나서.... 이미 기술된 현상을 보면 버그라는 게 자명한 것 아닌가요?
euc-kr 은 앞으로도 많이 쓰일 거 같고.. 아쉽긴 하지만, 사실상 튜토리얼이 없는 이상...
EUC-KR을 '쓰지 않으면서' 쓴다고 '거짓말'을 하는 게 문제입니다. EUC-KR만 제대로 쓰면 이해해 줄 수 있겠지요. (한국 시장만 겨냥한다는 가정 하에.)

Unicode=UTF-16이라고 알고나 있으면 다행이지만, Unicode=UCS-2라고 알고 있는 경우가 더 많겠지요. 하지만, 한글을 많이 쓰는 경우에 UTF-8을 안 쓰고, UTF-16을 쓴다고 해도 별로 나쁠 것도 없겠지요.

XML 교재나 온라인 강의 등에서 버젓이 '한국어는 euc-kr을 써야 한다'라고 나오는 것부터 바로 잡아야 할 듯.

널리 쓰이는 편집기 중에서 (윈도우즈에서) UTF-8/16을 제대로 지원하는 게 적은 것도 큰 문제이지만, 그쪽은 차츰 나아지고 있으므로....
여담이지만, ..전 phpbb 의 스마일리가 왠지 싫더군요.
사람에 따라 이모티콘이 받아들여지는 바가 다르기 마련이지만, 뭐랄까.. kldp 등지에서 논쟁하고 싸울 때 저 이모티콘이 가공할 폭력으로 쓰여지는 것을 많이 봐와서... (주로 비웃을 때 쓰이는 게 인상 깊어서 그런지 영...)
비웃을 때 쓸 이모티콘은 따로 있는데, 그렇지 않은 것을 그 목적에 오남용한 사람들이 있나 보네요.
Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot] and 2 guests