제목 | model에서 데이터를 가져와서 var_dump를 사용하여 데이터를 확인했을 때 데이터가 깨지는 문제 | ||
---|---|---|---|
글쓴이 | 정수리 | 작성시각 | 2016/07/18 08:57:39 |
|
|||
몇일전부터 계속.., 캐릭터셋 문제를 해결을 못해 멘붕이네요... phpshcool 포럼에서도 찾아보고 여쭈어보아 올라온댓글을 참고하여 해보았지만 다 실패....
그래서 천천히 해볼려고 합니다 ㅜㅜ 일단 model에서 $query = $this->db->query('select gg_name from gigwan');
$result = $query -> result();
var_dump($result);
var_dump를 통해 확인 했을 경우
데이터가 다깨져잇네요;
모델파일의 경우 인코딩 방식은 ANSI 이구여
서버의 mysql 캐릭터셋은 ecu-kr입니다
웹상에서 마우스 오른쪽을 클릭하고 인코딩 방식을 utf-8 or euc-kr로 변경을 해도 깨지는데 어디가 문제 일까요; 모델파일의 인코딩을 urf-8로 설정하고 봐도 깨지고 ANSI로 봐도 꺠지네요; 데이터의 경우 mb_detect_encoding함수를 사용했을 때 utf-8로 나와서 utf8로 바꿔줘도 깨지는건 똑같네요 ㅜㅜ
|
|||
다음글 | 로컬에선 잘 돌아가던 index 메소드가 서버에선 작동... (12) | ||
이전글 | 초보적인 질문좀 ... (2) | ||
kaido
/
2016/07/18 09:03:32 /
추천
0
|
한대승(불의회상)
/
2016/07/18 09:18:34 /
추천
0
한글이 깨지는 원인에 대해선 kaido님이 잘 설명해 놓으셔서 더 이상 할게 없구요.
소스코드를 아래 처럼 고쳐서 테스트 해보세요. $this->db->query("set names 'euckr'"); $query = $this->db->query('select gg_name from gigwan'); $result = $query -> result(); echo '<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />'; var_dump($result);
|
정수리
/
2016/07/18 09:53:29 /
추천
0
@한대승 답변감사드립니다 ㅜㅜ 감사히 적어주신 코드대로 고쳐서 확인해보았지만 그래도 깨지네요 ㅜㅜ |
정수리
/
2016/07/18 10:01:05 /
추천
0
@kaido 친절한 답변 감사합니다 회사내인트라넷에 페이지를 추가하는 작업정도 인데 인트라넷 코드의 경우 제코드와 별 차이가 없는데 인트라넷은 한글이 안깨지고 제것만 깨지네요 ㅜㅜ 일단 말씀해주신 대로 확인해보았습니다. 1. mysql 드라이버 확인-> 이게 맞는지 모르겠지만 my.cnf파일을 확인하였는데 기본 캐릭터 셋이 euckr이구요 2. 데이터베이스 캐릭터셋 euckr인것을 확인하였습니다. 3. html 메타도<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" /> 이렇게 명시 해주었지만 그래도 깨지네요 ㅜㅜ 4.파일 인코딩의 경우 에디트플러스를 통해 확인하여 인코딩 방식을 ANSI로 변경해주었습니다 5.호스팅같은 경우는 회사내 인트라넷이 euc-kr 캐릭터셋으로 잘돌아가고 있기에 문제가 없다고 판단됩니다 별 웹페이지의meta를 euc-kr, view폴더의 head.php 인코딩 방식 ANSI 으로 맞춰주었는데도 꺠지네요 |
kaido
/
2016/07/18 10:32:59 /
추천
0
사실상 최종 솔루션 입니다. 컨트롤러에 header("Content-Type: text/html; charset=euc-kr"); 모델에 쿼리 날리기 전에 $this->db->query("SET NAMES 'euc-kr' " );
|
정수리
/
2016/07/18 10:47:24 /
추천
0
@kaido 답변감사합니다 다행히 utf-8로 확인해보니 데이터가 한글로 표기 되더라구요 그래서 euc-kr로 웹페이지를 하고 iconv함수를 통해 utf8를 euc-kr로 변경하니 한글이 잘출력됩니다 정말감사합니다. |
한대승(불의회상)
/
2016/07/18 12:40:03 /
추천
0
@정수리 다행이 아닌거 같군요. 실 DB는 euckr 이라고 하셨는데 테스트 환경에서는 DB가 UTF8 이라는 뜻이잖아요. |
정수리
/
2016/07/18 13:24:35 /
추천
0
@한대승 테스트환경에서 db를 사용하지 않고 실서버에서 바로 내려받고 수정후 바로올려서 실서버에서 확인중입니다 |
캐릭터셋 euckr 이라니... 일단 깊은 한숨과 애도를 먼저 드리고.
캐릭터셋이 깨지는 이유는 종합적입니다.
1. db 드라이버 캐릭터 셋 체크
2. database 캐릭터 셋 체크
3. html 메타 태그 체크
4. 파일 자체에서 간혹 깨지는 경우. 파일의 캐릭터 셋 체크
5. 호스팅의 캐릭터셋 체크. [아주 간혹 웹 호스트 때문에 깨지기도 함]
6. 프로토콜에서 깨짐 [이건 PG사랑 통신 할 때인데 현재 문제하고는 상관없으니 참고로만 보세요]
보통 1-3번 안에서 해결 됩니다.
그리고 마우스 오른쪽으로 캐릭터셋 변경 하지 마시고, 태그를 넣어서 명확히 제시를 하세요. 메타 태그 캐릭터 셋으로 검색 하시면 나옵니다.