유니코드논의/파일명인코딩| -287,8 +287,7 |
| : 아 네 맞습니다. gyparkwiki가 euc-kr을 쓰는 상태에서 작성한 페이지이다보니... 지금은 utf-8이니까 저 링크를 클릭하면 옵션에 관계없이 utf-8로 보내지기 때문에 괜찮죠. <mysign([[Raymundo]],2007-5-26 8:33 pm)> |
| 憩袞SWAG_lierbaby_加뎌쑵毆괴_옵갖잭랏돨와렛昑갖륩蛟 <mysign(61.253.47.154,2020-5-16 6:19 pm)> |
| <longcomments(100)> |
| ---- |
| </div> |
| _ | ___________ IE옵션 켬 ___________ | ___________ IE옵션 끔 ___________ | 비고 |
| CheckURL off | (1) e이유씨 (X) u유티에프8 (O) | (2) e이유씨 (O) u유티에프8 (X) | _ |
| CheckURL on | (3) e이유씨 (O) u유티에프8 (O) | (4) e이유씨 (O) u유티에프8 (X*) | X* : URL을 "http://gypark.pe.kr/checkurl_on/u"로 취급하여 404 |
<IfModule mod_url.c> CheckURL on </IfModule>이 경우, URL을 넘겨 받았는데 그 URL에 해당하는 파일이 없을 경우, URL이 UTF-8로 인코딩된 것이라고 간주하고, EUC-KR로 인코딩해서 처리한다고 합니다. 따라서 위 결과표의 (3)의 경우는 두 파일 다 정상적으로 볼 수 있습니다. 문제는 (4)에서 UTF-8 파일명의 경우인데, URL은 EUC-KR로 날아오는데 파일이 UTF-8로 저장된 경우, 이번에는 반대로 변환해주어야 하는데 그러지를 못하고 제대로 처리되지 않습니다. 이 문제에 관해 언급한 [KLDP 글타래]에 보면 mod_url 설정에 추가로 ServerEncoding, ClientEncoding 두가지 옵션을 주어서 역변환도 지원하도록 했다고는 하는데, 이 홈페이지가 있는 서버에서는 저 두 옵션을 인식하지 못하더군요. (저 얘기가 몇 년 전에 나온 건데도 그보다 이전 버전의 mod_url을 사용하는 모양입니다 -_-;) (여담으로, IE7.0에서는 IE와 mod_url이 서로 묘하게 반응하는 바람에 또 문제가 되는 듯 하고, 태터툴즈 개발자 포럼 쪽 보면 이번에는 CheckURL을 off로 해야 태터툴즈의 작성한 블로그 포스트 링크에 한글이 포함되어 있을 때 제대로 된다는 얘기가 있더군요... 이래저래 mod_url에만 기대기도 힘든 상황인 듯. 관련 링크는 창을 닫아버려서 다시 찾기 귀찮은고로 생략)
| _ | ___________ IE옵션 켬 ___________ | ___________ IE옵션 끔 ___________ | 비고 |
| CheckURL off | (1) e이유씨 (X) u유티에프8 (O) | (2) e이유씨 (X) u유티에프8 (O) | (2)의 결과가 위와 다르다. (1)과 같은 결과 |
| CheckURL on | (3) e이유씨 (O) u유티에프8 (O) | (4) e이유씨 (O) u유티에프8 (O) | (4)의 결과가 위와 다르다. (3)과 같은 결과 |
IE의 출력인코딩을 UTF-8로 바꾸면 새로고침을 해서 출력이 나오는데...
어째서 "유니코드논의/파일명인코딩"이라고 나오지 않고 "??니코드??의/??일명인코딩"이라고 나오는 걸까요???? "유","논","파"라는 글자 자체의 문제는 아닙니다. 링크를 살짝 바꿔서 "파일명파인코딩"으로 바꿔보면 중간의 파는 또 제대로 나오거든요. (대신 이번에는 또 다른 글자가 깨짐)
뭐 좋습니다, 어쨌거나 앞의 테스트로 미루어 보건데 이번에도 링크의 URL이 UTF-8로 넘어갔기 때문이라고 치고...
2) http://gypark.pe.kr/encoding/euckr.html 페이지 하단의 링크를 클릭하는 경우
이번에는 html 파일이 EUC-KR로 인코딩되어 있는 것이니, 그 안의 링크는 IE의 옵션에 따라 되다가 말았다가 해야 하지 않겠습니까? 그런데, IE의 옵션에 관계없이 항상 됩니다. 항상 UTF-8로 보낸다는 옵션이 켜져 있을 때도 됩니다.
-_-;;; 어째서 되는 거야?
3) IE 주소 표시줄에 직접 "http://gypark.pe.kr/cgi-bin/wiki/wiki.pl?유니코드논의/파일명인코딩"을 입력하는 경우
마찬가지로, IE옵션이 켜져 있어도 잘 됩니다.
이 때의 "된다/안 된다"는 앞의 텍스트 파일 불러오기와는 상황이 달라서, wiki.pl은 무조건 실행이 됩니다. 따라서 "웹서버의 반응을 보고 IE가 인코딩을 바꿔서 요청을 다시 한다"는 가설은 세울 수 없습니다. mod_url이 관여하는지는 확인을 하지 못했지만, 따로 CheckURL 옵션을 켜 주지도 않았으니 안 하리라고 생각됩니다. (사실 그 부분은 자신이 없음. 게다가 mod_url이 동작할 때 로그를 남기게 하려면 재컴파일해야 하는 것 같아서 손을 못 댑니다) 그렇다면 결국 애초에 요청을 보낼 때부터 2)와 3)은 무조건 EUC-KR 형태로 보냈다는 이야기?? 그럼 텍스트 파일의 경우와 왜 다르게 동작하는 걸까요? 혹시 URL에 "?"가 포함된 경우는 반대로 무조건 EUC-KR로 보내도록 되어 있음?
/cgi-bin/simple.pl??\x88\xeb\x85Wx95?\x98\xec\x84\xb8? <-- IE /cgi-bin/simple.pl?%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94 <-- Mozilla돌아가시겠다...
http://gypark.pe.kr/encoding/안녕하세요.txt
1) IE의 "URL을 UTF-8로 보내기" 옵션 켜고, 주소 표시줄에 입력
"GET /encoding/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94.txt HTTP/1.1" 304 - <-- UTF-8로 보냈다
2) IE 옵션 끄고, 주소 표시줄에 입력
"GET /encoding/\xbe\xc8\xb3\xe7\xc7\xcf\xbc\xbc\xbf\xe4.txt HTTP/1.1" 404 229 <-- EUC-KR로 보냈다
<- 404 에러나는 건 당연한데, 이건 또 왜 %인코딩이 아니라 \x로 시작하는 코드가... -_-?
3) IE 옵션 켜고, EUC-KR 인코딩된 페이지에서 링크 클릭
"GET /encoding/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94.txt HTTP/1.1" 304 - <-- UTF-8로 보냈다
4) IE 옵션 끄고, EUC-KR 인코딩된 페이지에서 링크 클릭
"GET /encoding/\xbe\xc8\xb3\xe7\xc7\xcf\xbc\xbc\xbf\xe4.txt HTTP/1.1" 404 229 <-- EUC-KR로 보냈다
5) IE 옵션 켜고, UTF-8 인코딩된 페이지에서 링크 클릭
"GET /encoding/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94.txt HTTP/1.1" 304 - <-- UTF-8로 보냈다
6) IE 옵션 끄고, UTF-8 인코딩된 페이지에서 링크 클릭
"GET /encoding/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94.txt HTTP/1.1" 304 - <-- UTF-8로 보냈다!!!
<- 고로, UTF-8 인코딩된 페이지의 링크는, IE 옵션에 관계없이 UTF-8로 보냄을 알 수 있다.
http://gypark.pe.kr/cgi-bin/simple.pl?안녕하세요
1) IE의 "URL을 UTF-8로 보내기" 옵션 켜고, 주소 표시줄에 입력
"GET /cgi-bin/simple.pl?\xbe\xc8\xb3\xe7\xc7\xcf\xbc\xbc\xbf\xe4 HTTP/1.1" 200 292 <-- EUC-KR로 보냈다 -_-;
2) IE 옵션 끄고, 주소 표시줄에 입력
"GET /cgi-bin/simple.pl?\xbe\xc8\xb3\xe7\xc7\xcf\xbc\xbc\xbf\xe4 HTTP/1.1" 200 292 <-- EUC-KR로 보냈다
3) IE 옵션 켜고, EUC-KR 인코딩된 페이지에서 링크 클릭
"GET /cgi-bin/simple.pl?\xbe\xc8\xb3\xe7\xc7\xcf\xbc\xbc\xbf\xe4 HTTP/1.1" 200 292 <-- EUC-KR로 보냈다 -_-;
4) IE 옵션 끄고, EUC-KR 인코딩된 페이지에서 링크 클릭
"GET /cgi-bin/simple.pl?\xbe\xc8\xb3\xe7\xc7\xcf\xbc\xbc\xbf\xe4 HTTP/1.1" 200 292 <-- EUC-KR로 보냈다
5) IE 옵션 켜고, UTF-8 인코딩된 페이지에서 링크 클릭
"GET /cgi-bin/simple.pl??\x88\xeb\x85\x95?\x98\xec\x84\xb8? HTTP/1.1" 200 294 <-- UTF-8로 보냈고, 깨졌다 -_-;;;;
6) IE 옵션 끄고, UTF-8 인코딩된 페이지에서 링크 클릭
"GET /cgi-bin/simple.pl??\x88\xeb\x85\x95?\x98\xec\x84\xb8? HTTP/1.1" 200 294 <-- UTF-8로 보냈고, 깨졌다 -_-;;;;
<-- 이게 바로 태터툴즈(UTF-8로 출력된다)에서 유즈모드로 링크를 건 것을 클릭했을때 문제가 되는 경우
아무리 유즈모드 쪽에서 UTF-8 지원을 하려고 해도, 요청 자체가 깨져서 오면 처리할 수 없다.
[KLDP BBS]에 물어보니, 버그 맞답니다 -_-;;;; 아 정말 이것 때문에 만 이틀을 삽질을...
같은 애기를 하고 있는 글들:
| _ | network.standard-url.encode-utf8 = true | network.standard-url.encode-utf8 = false (기본값) | 비고 |
| CheckURL off | (1) e이유씨 (X) u유티에프8 (O) | (2) e이유씨 (O) u유티에프8 (X) | _ |
| CheckURL on | (3) e이유씨 (O) u유티에프8 (O) | (4) e이유씨 (O) u유티에프8 (X) | _ |
| _ | network.standard-url.encode-utf8 = true | network.standard-url.encode-utf8 = false (기본값) | 비고 |
| CheckURL off | (1) e이유씨 (X) u유티에프8 (O) | (2) e이유씨 (O) u유티에프8 (X) | _ |
| CheckURL on | (3) e이유씨 (O) u유티에프8 (O) | (4) e이유씨 (O) u유티에프8 (X) | _ |
| _ | network.standard-url.encode-utf8 = true | network.standard-url.encode-utf8 = false (기본값) | 비고 |
| CheckURL off | (1) e이유씨 (X) u유티에프8 (O) | (2) e이유씨 (X) u유티에프8 (O) | _ |
| CheckURL on | (3) e이유씨 (O) u유티에프8 (O) | (4) e이유씨 (O) u유티에프8 (O) | _ |
http://ko.wikipedia.org/wiki/위키 <- 이 주소를 IE의 주소 표시줄의 복사하거나, 그냥 이 페이지에서 클릭해보세요. IE옵션이 "켜져 있을 때만" 제대로 될 겁니다. (거의 모든 국내 웹 게시판이나 사이트 등에서 "옵션을 끄세요"라고 권하는데 말이죠) -> 저는 꺼져있을 때도 제대로 되길래 이상하네 생각을 했더니만, 이 site가 encoding이 바뀌기 전에는 안되었다는 말이었군요.