CI 묻고 답하기

제목 post 한글 전송시 한글이 공백 처리되는 문제
글쓴이 재희 작성시각 2012/09/29 16:01:53
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 28090   RSS
 안녕하세요. 

현재 코드이그나이터로 개발을 하면서
기본적인 문제를 겪고 있습니다. 문제는 해결이 안된다는거에요 ;;

title 이라는 필드에 한글을 담아서 디비에 넣어야 하는데 
한글이 사라집니다. 

항상 에디터 기본값을  utf-8로 맞춰놓아서 인코딩 문제는 생각안했는데
혹시나 해서 file -I 명령어로 인코딩도 확인하고 
content-type 도 utf-8 로 맞췄습니다. 

혹시 codeigniter 의 post field 처리하는 과정에서 사라지는지 확인하려고 
index.php 가장 맨 앞단에 $_POST변수를 출력해보니까 한글 출력이 잘됩니다. 

결론은 codeigniter가 post변수 처리과정에서 사라진다는 것인데 , 어디서 사라지는 확인해보니까 
Utf8클래스에 clean_string메소드에서 iconv 함수를 통과하면 한글이 빈칸이 됩니다.. 
clean_string 함수 보니까 ascii 값이 아니면 컨버팅 하는거 같은데  

여기만 통과하면 한글이 사라지네요. 혹시 제가 어떤 설정 부분에서 실수했다거나, 폼전송시 실수 한 부분이 있을까요? 
추석 연휴에 이것때문에 고생이네요 ㅠ.ㅠ 


태그 한글폼전송
 다음글 파일 업로드 문제인데요...ㅜㅜ (2)
 이전글 why? how? CI sessoin!!!!! 질문.... (3)

댓글

재희 / 2012/09/29 18:01:45 / 추천 0
http://stackoverflow.com/questions/9375909/iconv-utf-8-ignore-still-produces-illegal-character-error 이 글을 참고 했습니다. 답변자의 말로는 iconv 함수의 인풋 인코딩 파라미터와 아웃풋 인코딩 파라미터가 달라야 한다는데 ;; 뭐가 사실인지 모르겠네요 ;;
taegon / 2012/10/04 13:45:09 / 추천 0
데이터베이스 저장 전에 변수값을 찍어 보셨나요?
$_POST 값이 잘 나오면 $this->input->post() 값도 잘 나옵니다.
데이터베이스에 저장하기 전에 POST의 값이 어떻게 되는지 확인해보시는 것이 좋을 듯 합니다.

재희 / 2012/10/05 00:15:14 / 추천 0
 데이터 베이스 저장전에도 제대로 안나옵니다. 

POST변수로는 제대로 넘어가는데 , 
core부분에서 INPUT 클래스 로드시에 UTF-8클래스를 로드 하게 되는데 

로드 하는 부분에 보면

UTF8클래스의 clean_string 메소드를 반드시 실행하게 됩니다. 

이 메소드의 내용은

function clean_string($str){
     if($str이 아스키 값이 아니라면){
            $str = @iconv('UTF-8','UTF-8/IGNORE',$str)  
     }
    return $str ;
}

입니다.  이 함수를 실행하게 되면서 $str값에 있는 값이 빈칸으로 처리됩니다. 

저 코드는 UTF-8이 아닌 문자는 이그노어 시키라고 하는거 같은데 ,
저 함수안에 인자를 그냥 숫자든 특수 문자든 어떤 문자를 넣어도 그냥 빈칸으로 처리되네요. 


재희 / 2012/10/05 00:21:47 / 추천 0
 
<?php
    $str = iconv("UTF-8","UTF-8/IGNORE","코드이그나이터") ;
    echo $str ; 
?>

제가 셋팅 부분에서 잘못을 한건지 모르겠네요. 
인자에 어떤 값을 넣어도 빈칸만 출력합니다. ~                   
공이 / 2012/10/05 10:18:40 / 추천 0
iconv("", "UTF-8//IGNORE", "코드이그나이터");
로 한번 해보세요.

IGNORE 의 슬래시는 2개 써주셔야 하고.. 앞 인코딩을 공백으로 두면..
대부분 자동으로 해당 인코딩을 판단하여 변환해 줍니다..

확인해보세요.