제목 | EUC-KR -> UTF-8 변환 질문드립니다 | ||
---|---|---|---|
글쓴이 | 돼지바뿅뿅 | 작성시각 | 2015/11/19 10:53:50 |
|
|||
카드결제를 위해 pg사와 연동을 하였는데요, pg사가 euc-kr을 사용을해서 저희쪽에서 보낼 때 form에 accept-charset="EUC-KR" 옵션을줘서 잘보내지긴합니다. 문제는 받아서 저희 쪽 디비에 넣을땐데요 mysql사용하고있고, 모바일 앱에서 사용중이구요. iconv도 써보고, mb_convert어쩌구 써봐도 디비에 글이 다 깨져서 들어갑니다.. 예를 그쪽에서 GET형식으로 test란 변수를 보내줄때 $test = iconv('EUC-KR', 'UTF-8', $_GET['test']); $this->db->set('test', $test); 이런식으로 해봐도..DB에 입력은 다깨져서들어갑니다.. 謬트, ()쨍커 이렇게..뭐 말도안되는글자가... 해결방법좀 알려주세요 ㅜ |
|||
다음글 | 세션 아이디 중복 입력되는 에러 (2) | ||
이전글 | 게시판 입력 폼에서 엔터 적용되게 하는 방법? (1) | ||
한대승(불의회상)
/
2015/11/19 11:21:10 /
추천
0
|
돼지바뿅뿅
/
2015/11/19 13:27:08 /
추천
0
@한대승
확인을해본 결과 pg사에서 받는값은 EUC-KR, mysql(DB)는 utf-8로 설정되어있습니다. php파일 역시 utf-8로되어있구요...ㅠㅠ |
kaido
/
2015/11/19 13:38:21 /
추천
0
보내는쪽 form 태그에다가 accept-charset="euc-kr" 추가요.
왠지 그 pg사 어디인지 촉이 오네요. |
들국화
/
2015/11/19 15:47:47 /
추천
0
DB에 깨져서 입력이 된건지 깨져 보이는지 확인해 보세요.
mysql의 서버, 클라의 charactor set을 확인 하세요. |
돼지바뿅뿅
/
2015/11/19 16:52:46 /
추천
0
@kaido @들국화
pg사는 다우페이구요, utf-8로 변경해서 보내줄수 있냐 요청했더니, $_GET방식으로 url뒤에 파라미터로 붙여서 보내주는거라 불가하다고하네요..ㅜㅜ DB의 charactor set은 utf-8입니다 ㅜㅜ 확인해봤습니다 ㅜㅜ 받는 값 역시 체크 해봤습니다 $TEST_CHARSET = mb_detect_encoding($_GET['TEST'], "ASCII, EUC-KR, UTF-8, CP949"); $TEST = iconv($TEST_CHARSET , "UTF-8", $_GET['TEST']); $this->db->set("TEST", $TEST); <<역시나 깨집니다...ㅜㅜ 그냥 받은 그대로 집어넣으면 도형과함께 이상한 글자들이 들어가고, 변환후 넣으면 한자와 쀏뾻같이 ...외계어로 들어갑니다.. $TEST_CHARSET을 출력했을때 EUC-KR 제대로 나오구요... 그상태에서 DB에서 꺼내도 깨진 그대로 출력이됩니다..ㅜㅜ 어떤게 문제일까요 ㅜ |
한대승(불의회상)
/
2015/11/19 17:06:31 /
추천
0
변환전 데이터가 EUCKR 로 제대로 들어오는지 확인 하시고 변환후 데이터가 UTF8 인지 확인 하세요.
|
kaido
/
2015/11/19 17:15:27 /
추천
0
db 콜렉션도 확인해 보세요.
utf8_general_ci 저도 오늘 pg사가 euc-kr로 넘겨주는 데이터 처리 하느라고 테스트 해보았습니다만 파일 utf-8 메타태그가 utf-8 이고 db가 utf-8 이고 넘겨받는 것이 euc-kr 입니다. $resultMap = array(); foreach ($_REQUEST as $key => $value) { $resultMap[$key] = iconv("EUC-KR", "UTF-8", $value); } 넘겨 받는 값 그냥 싹다 치환해서 처리 했습니다. |
돼지바뿅뿅
/
2015/11/19 17:32:06 /
추천
0
@한대승 @kaido
변화전 데이터가 utf-8로 변환되는것도 확인했습니다.. 분명 변환은 되는데 왜깨지는걸까요 ㅜㅜ db콜렉션 역시 utf8_general_ci가맞구요.. 알려주신대로 통으로 바꿔서 해보았는데..역시나 깨집니다 ..골아프네요 ㅜㅜ |
한대승(불의회상)
/
2015/11/19 17:56:06 /
추천
0
컬럼 문자셋도 확인해 보세요.
간혹 컬럼에 엉뚱한 문자셋이 지정되어 있는 경우도 있더군요. |
들국화
/
2015/11/19 18:04:25 /
추천
0
깨진 데이타 인지 깨져 보이는지 체크하라는 거구요.
즉 클라이언트 설정도 utf8인지 확인해 보세요. |
돼지바뿅뿅
/
2015/11/24 10:18:26 /
추천
0
몇일을삽질을했네요ㅜ
_system/core/Utf8.php 파일의 clean_string함수의 $str = @iconv('UTF-8', 'UTF-8//IGNORE', $str); 부분을 주석처리했더니 바로해결됐습니다..ㅜㅜ 답변달아주신분들 감사합니다 ㅜ 많이배웠습니다 ^^ 감기조심하세요. |
2. mysql table이 UTF8 인지 확인 한다.
이렇게 단계별로 점검 하면 되겠군요.