마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 php mysql 한글 깨짐 ㅠㅠㅠ

0 추천

안드로이드에서 utf-8 로 get 방식으로 php 에 보내고 그걸 mysql 저장 하고 있는데요 

안드로이드 확인 
 
 
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8")); 
소스 일부분이구요 이렇게 utf-8 로 php 에 보냅니다 . 
안드로이드 프로젝트 또한 utf-8 로 인코딩 되어있습니다. 
 
 
php 부분 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
mysql_query('set names utf8', $connect);  
$nickname = $_GET[nickname]; 
$nickname = iconv("UTF-8","UTF-8",$nickname); 
php 문서도 utf-8 로 인코딩 되어있습니다. 
이것도 소스일부분 이구요 그냥 한글 저장이 안되서 iconv 로 다시 변경을 해보았습니다. 
 
 
mysql 부분 
Server characterset : utf8 
Db characterset : utf8 
Client characterset : utf8 
Conn. characterset : utf8 
 
/etc/sysconfig/i18n 
 
LANG="ko_KR.UTF-8" 
SUPPORTED="ko_KR.UTF-8:ko_KR:ko:en_US.UTF-8:en_US:en" 
SYSFONT="latarcyrheb-sun16" 
SYSFONTACM="8859-15" 
 
db 컬럼 "nickName" 조합 이란 부분도 utf8_general_ci 로 변경 했습니다. 
 
etc/my.cnf 
[client] 
default-character-set =utf8 
 
[mysqld] 
skip-character-set-client-handshake 
init_connect = SET collation_connection = utf8_unicode_ci 
init_connect = SET NAMES utf8 
character-set-server = utf8 
collation-server = utf8_general_ci 
 
[mysqldump] 
default-character-set = utf8 
 
[mysql] 
default-character-set = utf8 
디비에서 쿼리로 nickName 에 한글을 "가나" 이렇게 넣고 안드로이드로 파싱하고 로그 찍어보면 
uac00 ub098 이렇게 유니코드(?)로 넘어오는데 이게 무슨 관련이 있을까요 
관련이 있다면 어느 부분을 설정해줘야 할까여 ... 
일단 제가 설정한 값들입니다 그런데도 안드로이드에서 nickname 이란 부분을 한글로 써서 변수로 보내면 
디비에 저장은 ? 로 됩니다 미치겠습니다 ㅠㅠ 제가 놓치고 있는 부분이 어디인가요 ㅠㅠ? 
어디서 다시 접근 해야 할지 모르겠습니다 ㅠㅠ 도와주세요 고수님들 
현재까지 테스트 이것저것 해보고 있는데 php 에서 직접 쿼리에 한글을 써서 날리면 db 에 한글 저장이 됩니다. 
하지만 변수로 날리면  ? 가 뜹니다. 이러면 결국 안드로이드에서 잘못 넘겨진거라고 밖에 생각 안되는데 
도통 감이 안오네여 그리고 받아 올땐 왜 유니코드로 받아지는걸까여 .. 하 ..미치겟네요 하루종일 
이거 하나로 싸우고 있습니다. 제발 도와주세요 ㅠㅠ
===========================================
url += "id=" + id.getText() + "&";
url += "pass=" + pass.getText() + "&";
url += "nickname=" + nickname.getText() +"&";
url += "MyDeviceId=" + MyDeviceId; 혹시 이 부분이 문제가 되는건가요 ?! 이부분이 문제가 된다면 php 에서 어떻게 처리해줘야 할까요?!

 

숀화이트 (3,310 포인트) 님이 2014년 3월 5일 질문
숀화이트님이 2014년 3월 5일 수정
아 저는 메타가 없어서 지금까지 헤맸네요
덕분에 해결했어요 감사합니다

2개의 답변

0 추천
혹 아파치의 request 인코딩이 잘못되지는 않았는지요?
냉동참치 (2,340 포인트) 님이 2014년 3월 5일 답변
AddCharset UTF-8 .utf8
httpd.conf 에 추가 했습니다 ㅠㅠ
0 추천

자답 입니다. url encoding 문제였습니다. 

이런게 있는줄은 몰랐네요 ㅠㅠ 

String str = nickname.getText().toString();
try{
str = URLEncoder.encode(str,"UTF-8");
} catch(Exception e) {
e.printStackTrace();
}
String str1 = new String(str.getBytes("UTF-8"));
url +="nickname=" + str1 +"&";
 
하루종일 삽질 했네요 .... 후.. 
숀화이트 (3,310 포인트) 님이 2014년 3월 5일 답변
설마 그거일가해서 답변안드려는데 그게맞네요? ㅡㅡㅋ
...