TIP게시판

제목 euc-kr 환경에서 uri에 한글 사용하기
글쓴이 kirrie 작성시각 2009/09/09 17:04:41
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 20678   RSS
아, 너무 오랫만입니다.. 다들 열심히 활동하시는데, 죄송하다는 말씀 뿐이네요. ㅜ.ㅜ

utf-8 환경에서 uri에 한글을 사용할 수 있게 하는 것은 제가 예전에 올린 꼼수들 모음에 있습니다.
/system/application/config/config.php 파일에서

$config['permitted_uri_chars'] = '가-힣a-z 0-9~%.:_\-';

이 설정값만 저렇게 바꿔주시면 되지요. 근데 문제는 이게 euc-kr에서는 동작하지 않는다는겁니다.

제가 이번 새로 시작하는 프로젝트에서 CI를 쓰자고 강력하게 건의하는 바람에 지금 몇가지 테스트 중에 있는데
기본적으로 euc-kr 환경에서 개발을 하게 되므로 이 부분이 가장 먼저 걸리더군요.

아무튼 결국 코어를 건드리는 수 밖에 없을 것 같아서 눈물을 머금고 수정해서 원하는 결과를 얻었습니다.
그런데 생각해보니까 좀 어이없는 방법으로 이 문제를 해결할 수 있겠더군요.
모든 웹브라우져는 기본적으로 uri 전송시에 utf-8로 전송합니다. (이건 rfc 규약입니다.)
물론 ie같은 변태 웹브라우져에서는 utf-8 전송하지 않기 같은 옵션이 있기도 하지만, 이건 논외로 하고...

그렇다면 아무리 제 CI 환경이 euc-kr라고 할지라도 uri를 통해 입력된 문자열은 무조건 utf-8이라고
봐도 무방하다는거지요. 그리고 $config['permitted_uri_chars'] 값에 기재된 패턴들로 preg_match를 통해
이 uri를 검사하는데... 그렇다면!

...위와 같이 설정을 변경한 뒤에 config.php를 utf-8로 저장하면 됩니다. 그럼 끝, uri에서 한글을
잘 사용할 수 있어요. 정말입니다.

이해가 안되시는 분들은 uri를 CI가 어떻게 처리하는지 /system/libraries/URI.php 를 뜯어보시면
금방 이해가 되실겁니다.

아, 코어를 건드리지 않고도 이 문제를 해결할 수 있어서 참 다행이네요. ^^
태그 euc-kr,utf-8,uri
 다음글 MySQL date/datetime 핸들링 (1)
 이전글 [jQuery plugin] uploadify (3)

댓글

마냐 / 2009/09/09 17:24:26 / 추천 0

오호..그렇군요.
URL에 한글이라..

변종원(웅파) / 2009/09/09 18:29:15 / 추천 0
설정은 $config['permitted_uri_chars'] = '가-힣a-z 0-9~%.:_\-'; 이걸로 하고
euc-kr환경에서 config.php만 utf-8로 저장...

정말 간단하네.

키리에군 잘지내지?
kirrie / 2009/09/09 22:05:29 / 추천 0
웅파// ㅎㅎ 형님도 잘 지내시죠? 저 간만에 CI 만지느라 다 까먹어서 한쪽에 몰래 메뉴얼 펴놓고 있답니다 요즘.. ㅎㅎ;;
최용운 / 2009/09/10 13:05:06 / 추천 0
 헐 .. 오랜만이야!~ 밥은 먹고다니니?ㅎㅎㅎ