제목 | GET 한글에서 CI가 값을 못 받는데 설정 같은 게 있나요? | ||
---|---|---|---|
글쓴이 | Chi | 작성시각 | 2014/04/29 12:48:18 |
|
|||
안녕하세요, 비도 그치고 좋은 날입니다. 궁금하고 답답한 게 있어, 검색을 해도 나오질 않아 고수님들의 도움을 받고자 이렇게 글 남깁니다. 현재 테스트 중인데요. 안되는 부분이 있어 이렇게 글을 남겨요. 간단한 테스트 페이지를 만들고, 응답값을 get 을 통해 받습니다. funcion index() { $test= $this->input->get('NAME', TRUE); log_message('debug',$test); } 실제 아파치 access_log 에는 정상적으로 ?NAME=%B9%E8 같이 나오는데요. 실제 CI 상에서는 아무런 값이 들어오지 않습니다. 어떤 문제 때문인가요? 혹시 아파치 설정 때문에 그런건지.. CI 때문에 그런건지 감이 안 잡히네요. 도와주시면 감사하겠습니다. |
|||
다음글 | form 액션 url 부분 도와주세요. ㅠㅠ (8) | ||
이전글 | 갑자기 이런 에러가 떴습니다... (2) | ||
한대승(불의회상)
/
2014/04/29 15:58:33 /
추천
0
|
Chi
/
2014/04/29 16:04:58 /
추천
0
불의회상// 답변감사드립니다. //$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; $config['permitted_uri_chars'] = '가-힣a-z 0-9~%.:_\-'; 다음과 같이 진행해도 변함이 없네요. 핫.. ㅠㅠ 테스트 페이지를 만들었습니다. 호출 test?NAME=%C7%F6%B4%EB 소스 public function index() { $test= $this->input->get("NAME"); log_message('debug',$test); } Log DEBUG - 2014-04-29 15:31:11 --> Model Class Initialized DEBUG - 2014-04-29 15:31:11 --> DEBUG - 2014-04-29 15:31:11 --> Final output sent to browser DEBUG - 2014-04-29 15:31:11 --> Total execution time: 0.0407 여전히 안들어오네요.. 죄송하네요. ^^ ㅠㅠ |
한대승(불의회상)
/
2014/04/29 16:16:15 /
추천
0
utf8로 값을 바꿔서 올리세요.
|
변종원(웅파)
/
2014/04/29 16:22:32 /
추천
0
파일 캐릭터셋과 전송되는 한글의 캐릭터셋이 뭔지 그것부터 올려주시는게 좋을 것 같네요.
부족한 정보로 스무고개가 시작됐습니다. |
Chi
/
2014/04/29 22:38:04 /
추천
0
웅파//
답변 감사드립니다. 테스트 페이지 조차 동작하지 않아 간소화 한다는 게 많은 혼란을 가져온 것 같습니다. 답변 주신 모든 분들께 죄송하다는 말과 감사하드린다는 말을 우선하겠습니다. 실제 개발 하는 부분은 다음과 같습니다. - 파일 캐릭터셋 : utf-8 - 전송하는 캐릭터셋 : euc-kr - 리턴받는 캐릭터셋 : euc-kr utf-8에서 전송할 때 charter set 을 euc-kr 로 바꿔서 submit을 하고, 해당 처리 페이지 후 euc-kr 로 인코딩 된 get 방식으로 값을 전달 받는 상황이었습니다. 다른 값들은 정상적으로 GET 으로 받아지는데, 유독 한글로 된 리턴 받는 값들이 아무값이 없이 들어오는 것이었습니다. 이상하여 Access_log를 확인한 결과 리턴해주는 곳에서는 정상적으로 값이 리턴해주는 것을 확인하였습니다. 그 후 테스트를 위해 윗 글 처럼 정상적으로 GET 방식이 정상적으로 들어오나, 정상적이지 않은 인코딩인가를 확인하기 위해서 테스트를 진행하였습니다. (ex. urldecode 에 직접 값을 넣어봐서 테스트해보기, GET 방식으로 받는 부분 만들기..) 테스트를 진행해도 인코딩 되어 보내진 값들을 하드코딩해논 urldecode 부분에서는 정상적으로 찍히나, get 으로 넘겨 준 부분에서는 여전히 널 값으로 찍혔습니다. 다른 CI 서버 사이트 개발자 분의 도움을 받아 해당 값을 넘겼을 경우 정상적으로 값이 들어가는 것을 보고 더욱 문제가 되었습니다 ㅠㅠ;; 여러분들의 도움을 받아 셋팅도 바꿔보고 core 부분도 확인해도 처리가 되지 않아 질문을 계속 드린다는게 너무 죄송할 뿐이네요. 계속 확인해보겠습니다. 관심 감사드립니다. |
ando
/
2014/04/30 00:36:42 /
추천
0
ci의 기본 캐릭터 셋이 config.php에 설정되어 있습니다.
만약에 config.php의 기본 캐릭터셋이 utf-8이면, 요청시 전송하는 캐릭터 셋을 urf-8로 보내시기 바랍니다. 서버와 요청 클라이언트 간의 캐릭터셋이 다를경우 get의 경우 값을 못받습니다. post의 경우에는 깨져서 들어오구요. 요청시 한글 부분을 encode해서 보내시거나 또는 해당 요청 페이지만 urf-8 로 처리해서 보내시는게 맞는듯 하네요. 크롬이나 파이어폭스에서는 주소창으로 입력시에는 자동으로 한글이 인코딩되어서 요청되어집니다. 익스의 경우에는 한글이 인코딩 되지 않고 그대로 요청이 들어가기 때문에 서버가 utf-8 일경우 값을 받지 못하구요. 크롬, 익스 개발자 도구 > 네트워크 에서 요청할때 한글이 어떻게 들어가는지 확인해보세요. |
한대승(불의회상)
/
2014/04/30 09:24:16 /
추천
0
application/config/config.php 에서 아래처럼 바꿔 보세요.
//$config['charset'] = 'UTF-8'; $config['charset'] = 'EUC-KR'; |
변종원(웅파)
/
2014/04/30 10:53:21 /
추천
0
var_dump($_GET) 해보세요. 데이터 나오면 ci 문제이고 안나오면 웹서버 설정을 봐야할 것 같네요.
|
이부분을 EUCKR로 바꿔 보세요.