CI 묻고 답하기

제목 ci 한글문제 때문에 마음고생이 심하네요
글쓴이 아날로직 작성시각 2009/04/13 22:15:32
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 31842   RSS
처음에 한글을 디비에 입력하면 아예 공백으로 들어가는 문제가 있었습니다.

mb_convert_encoding 함수로 인코딩 해서 넣는것으로 일단 입력은 되었습니다만

또 다른 문제가 생겼습니다. 세션에 한글을 넣으니 세션이 완전히 사라져 버리는 문제인데요... 하아.. 이것참..

다른분들은 한글문제가 없는지 구글링 해봐도 저와 비슷한 케이스가 없는것 같네요.

아래는 문제의 코드 부분입니다.

$row = $query->row();
$user_name = iconv("UTF-8","EUC-KR",$row->user_name);

$this->load->library('session');
$this->session->set_userdata('user_id', $this->input->post('user_id'));
$this->session->set_userdata('user_name', $user_name);

저기서 마지막줄에 $user_name 대신에 아이디를 넣으면 정상작동 됩니다만... 한글만 넣으면 세션이 완전히 사라져 버립니다.

혹시 저와 같은 경험을 하신분들 없으신가요? 저는 세션을 디비에 넣고 있습니다.
 다음글 사용자 포럼 사이트 제작 논의 합시다! (2)
 이전글 메뉴얼에 오타(?)가 있습니다. (3)

댓글

아날로직 / 2009/04/13 22:22:31 / 추천 0
,$row->user_name 을 그대로 넣어서 세션생성 후에 출력할때 iconv 나 mb_convert_encoding 같은함수로 로 바꿔주니까 일단 되긴 되는군요. 제 서버설정에 뭔가 문제가 있는것 같기도 하고.. 캐릭터셋.. 이거 뭔가 어렵네요~
변종원(웅파) / 2009/04/13 22:45:14 / 추천 0
$user_name = iconv("UTF-8","EUC-KR",$row->user_name);

echo $user_name; // 이거 잘 나오는지 한번 보시구요.

db는 utf-8로 쓰시고 php파일은 euc_kr로 쓰시는거죠? 이유가 궁금합니다.

대세라기 보다는 둘다 utf-8로 쓰는 것이 좋습니다.


메뉴얼에 의하면 쿠키의 최대용량은 4kb입니다. 기존에 세션으로 만드는 데이터가 4kb를 넘는지도 체크해보시구요.

db세션을 쓰신다면 euc_kr로 만든걸 utf-8 db에 넣었다가 다시 빼내서 쓰다보면 꼬일 가능성이 농후하네요.

iconv로 euc_kr로 만들지 마시고 $user_name = iconv("UTF-8","EUC-KR",$this->session->userdata('user_name')); 이렇게 쓰시기 바랍니다.

코드상으로는 이상한 점이 없습니다.

이런 문제가 생기지않게 하는 제일 좋은 방법은 db, php파일 환경 모두 utf-8로 쓰시는 것입니다. ^^
아날로직 / 2009/04/14 09:21:23 / 추천 0
그렇군요 php 환경을 euc_kr 로 쓰는 이유는.. 몰라서 였습니다 커허허...
.htaccess 파일에 아래 두줄을 추가하고 에디터에서 파일속성을 utf-8로 바꿔주니 해결 됐습니다.
말씀대로 db 는 utf-8 환경이고요
AddDefaultCharset utf-8
php_value default_charset "utf-8"