CI 묻고 답하기

제목 session userdata 관련 질문있습니다
글쓴이 허니버터아몬드1 작성시각 2015/07/22 15:59:24
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 14370   RSS
세션에서 userdata에 값을 저장할 때
항상 영어로만 저장하다 요번에 한글로 저장할 일이 생겼는데요

unserialize(): Error at offset 59 of 103 bytes 경로/system/libraries/Session.php 741

이런 에러문구가 나왔네요

session 테이블에 값을 보니, 한글로 저장한 값은 ???로 되어있었습니다.
한글 저장값을 다시 영어로 바꾸고 처리하면 다시 잘 돌아가구요..

테이블 인코딩 문제는 아닌것같습니다. 데이터를 가져오는 테이블의 인코딩도 utf-8, 값을 저장할 세션 테이블의 인코딩도 utf-8입니다.
php내에서 검사해봐도 한글문자열의 인코딩은 utf-8로 나옵니다.

구글링 해봐도 답이 안나오네요 ㅠ 한글은 못올리는건가요?
 다음글 모델에서 다른db로 연결하고 싶을때.. (2)
 이전글 기존 라이브러리 확장 사용 질문 (5)

댓글

변종원(웅파) / 2015/07/22 17:28:58 / 추천 0
한글 잘 저장되고 출력됩니다.
 
serialize화 하면 a:10:{s:16:"submit_editorial";b:0;s:15:"submit_orig_url";s:13:"www.b ... 이런 형태로 바뀌는데 글자 앞쪽의 숫자와 뒤 단어의 글자수가 틀리면 안되고 형식도 틀리면 안됩니다.

db에 ??? 형태로 저장이 됐다면 캐릭터셋 문제가 맞습니다. 세션 라이브러리에서 세션 저장하는 부분에서 출력을 해보세요.
허니버터아몬드1 / 2015/07/22 19:25:59 / 추천 0
변종원(웅파) // 답변 감사합니다~
말씀대로 앞쪽의 숫자와 뒷쪽의 숫자가 다르네요.. 영문으로 했을 경우엔 영문의 문자열만큼 잘 나오는데
한글로 한 경우엔, 한글은 세글자인데 s9라고 찍힙니다.

세션 저장하는 부분에서 저장되는 변수 값의 charset을 찍어봤는데 utf-8로 나오네요..문자도 화면이나 로그상에선 잘 나옵니다
db만 들어가면 ???가되네요..ㅠ
하늘치 / 2015/07/22 19:56:12 / 추천 0
혹시 디비 기본 collation이 latin1_swedish_ci 로 되어 있지는 않나요???

음, 그것도 아니라면..

utf8_general_ci 가 아니라거나, utf8_bin 이 아니라거나..

갑자기 든 생각이라 적어봅니다.
가나다123 / 2015/07/23 13:15:56 / 추천 0
하늘치// 답변 감사합니다
db,테이블 전부 기본 utf-8입니다~
변종원(웅파) / 2015/07/23 13:38:13 / 추천 0
에디터 저장 캐릭터셋도 확인해보세요. utf-8 bom 이면 그럴 수도 있습니다.