정말 황당한 경험을 했다. 모든 페이지를 utf-8로 만들었고, .htaccess를 사용해서 기본 charset도 utf-8이라고 명시를 해줬다. ajax 로 한글을 보내고, 결과를 받아왔는데 이해할 수 없는 오류가 발생하기 시작…
처음엔 브라우져 간의 javascript 호환성 문제라고 생각을 했고, 여러가지로 테스트를 시작했다. 전제가 틀렸는데 답을 쉽게 찾을 리가 없지! 결국 세 시간 가까이 소비를 한 끝에 문제점을 찾아냈다.
정말 황당한 경험을 했다. 모든 페이지를 utf-8로 만들었고, .htaccess를 사용해서 기본 charset도 utf-8이라고 명시를 해줬다. ajax 로 한글을 보내고, 결과를 받아왔는데 이해할 수 없는 오류가 발생하기 시작…
처음엔 브라우져 간의 javascript 호환성 문제라고 생각을 했고, 여러가지로 테스트를 시작했다. 전제가 틀렸는데 답을 쉽게 찾을 리가 없지! 결국 세 시간 가까이 소비를 한 끝에 문제점을 찾아냈다.
얼마전 kldp에서 제가 남겼던 코멘트들을 트래킹하는 도중! ICU에 charset detector가 포함되었단 소식을 듣게 되었습니다.
이 소식을 듣고 불이나게 ICU 문서를 뒤져봤지만, 문서가 굉장히 불친절하네요. -_-a
어쨌거나 IBM에서 만든 라이브러리 답게 C, C++, java 인터페이스를 모두 제공하고 있고, PHP에서도 intl 라이브러리를 통해 활용이 가능합니다만 아직 charset detector까지는 지원하고 있지 않습니다.
어제 까날옹이 egloos 에서 가볍게 트랙백을 날려주셨는데, egloos 에선 trackback 인코딩을 euc-kr 을 사용하는지 트랙백이 깨져서 와버렸네요. 혹시나 관련된 plugin 을 찾아봤지만 plugin 으로는 아직 존재하지 않는 듯 하고, 관련해서 wind-like 님이 문제를 해결한 버젼의 wp-trackback.php 파일을 배포하시더군요.
하지만 wordpress 기본 파일을 수정할 경우 업데이트를 할 때마다 다시 수정해줘야 하는 번거로움이 있기 때문에 그냥 plugin 을 작성해버렸습니다. 막상 plugin 을 작성하려고 보니 trackback_post 에 대한 action 은 글이 삽입된 이후에 실행되도록 되어 있더군요. 역시 그냥 wp-trackback.php 를 수정해서 사용해야 하는건가 하는 생각이 들었지만, 뭐 정도가 아니면 돌아가면 되는 법!! 이미 데이타베이스에 입력완료된 trackback 을 update 하도록 하는 hack 에 가까운 플러그인이 만들어져버렸습니다. -_-v
혹시나 필요한 분은 아래 url 에서 받아서 사용하시면 되겠습니다.
http://mytears.org/resour...korean_trrackback-1.0.zip
p.s) wind-like 님이 수정하신 버젼과는 다르게 ‘트랙백을 받는 경우’ 하고만 관련이 있습니다.
사실 unfix 는 나 혼자 쓰는 서버가 아니고… 파일이름등을 unicode 로 관리할 경우 ms 윈도우와의 궁합이 그다지 좋지 않기 때문에… utf-8 환경을 갖추는 게 망설여지는게 사실이었다.
얼마 전 젠투 한국 사용자그룹의 유리님의 개인 portage-overlay 리스트를 보다가 proftpd 의 charset conversion 패치를 발견했다. 원 출처는 일본 쪽인 듯 싶은데, 이 패치를 적용하면 client 에서 사용하는 charset 과 server에서 사용하는 charset 을 설정하는게 가능해진다.
http://home.h01.itscom.ne...roftpd-iconv/index-e.html
만약 중간에 charset conversion 에 실패했다거나 한 경우 어떻게 처리를 하나 봤더니, 변환에 실패한 글자를 ‘?’ 로 바꿔버리고 있었다. out_buffer size 를 in_buffer size 의 세 배 크기로 할당하고 중간에 에러가 발생하면 무조건 변환이 실패한 것으로 생각하기 때문에 한 글자를 표현하는데 3바이트보다 더 많은 바이트 수가 필요하다면 (ucs2 로는 표현 못하는 글자를 사용하는 경우), 버퍼 오버플로의 희생양이 될 수도 있을 듯 싶다. 그래도 원하는 코드를 삽입하는 건 힘들고 그저 segmentation error 를 부를 뿐이겠지만 찝찝한 건 사실이므로 에러가 발생할 경우 errno 를 참고하도록 패치를 해야겠다.
근데 실제 적용을 해보니 Directory 나 .ftpaccess 를 통한 지역 설정이 허용되지 않는다. 내가 사용하는 폴더들에 한해서 저 패치의 영향을 받게 하는게 목적이었기 때문에 결국 패치를 해버렸다. proftpd 개발자 문서는 서버가 다운되었었는지 참고를 할 수가 없었고, 그나마 미러링 된 곳도 찾을 수가 없어서 한참 헤매긴 했지만!! 결국!! 내가 원하는 데로 패치 성공 -_-v
패치파일:
http://mytears.org/resour...atches/mod_codeconv.patch
mod_autoindex 도 몇 일전에 charset 을 설정해줄 수 있도록 패치했고, 그 외에는 이미 다 준비가 되어 있었기 때문에 누군가 mod_autoindex 의 새로운 테마만 만들어준다면 바로 utf-8 환경으로 넘어갈 수 있을 듯 싶다.
FTP 관련해선 RFC2640 에 있는 것을 구현하는 것이 옳다고 생각하지만 중간 단계로써 mod_codeconv 도 나름의 의미가 있을 듯 싶다.
p.s) 위의 사이트에 나와있는 메일 주소로 패치파일을 보내주려 했지만 메일주소가 죽어있네요.