안녕하세요.
현재 서버와 데이터를 통신하는 어플개발을 공부하고 있습니다.
현재 어플에서 MultipartEntity를 이용하여 값을 php 서버에 보내고 서버는 그 값을 mysql db에 넣고 있습니다.
그런데 db를 확인해 보면 한글이 깨져 보입니다. 물론 앱에서 다시 받아올때 한글로 받아와 지지만 db에는 한글이 깨져있습니다.
현재 앱에서는
HttpPost post = new HttpPost(JOIN_SERVLET);
post.setHeader("Connection", "Keep-Alive");
post.setHeader("Accept-Charset", "UTF-8");
post.setHeader("ENCTYPE", "multipart/form-data");
MultipartEntity multiPart = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
multiPart.addPart("id", new StringBody(URLEncoder.encode(id, "UTF-8")));
multiPart.addPart("password", new StringBody(URLEncoder.encode(password, "UTF-8")));
multiPart.addPart("lastname", new StringBody(URLEncoder.encode(lastName, "UTF-8")));
multiPart.addPart("firstname", new StringBody(URLEncoder.encode(firstName, "UTF-8")));
post.setEntity(multiPart);
response = httpClient.execute(post);
utf-8로 encode 하여 보내고 php 서버에서는
<? php
include 'MemberDAO.php';
$id = urldecode($_POST['id']);
$password = urldecode($_POST['password']);
$lastname = urldecode($_POST['lastname']);
$firstname = urldecode($_POST['firstname']);
$dao = new MemberDAO();
echo $dao->memberJoin($id, $password, $lastname, $firstname);
?>
를 하여 decode하여 데이터를 db에 insert하고 있습니다.
mysql도 모두 확인하였는데 utf-8로 다 저장되어있습니다.
iconv를 이용해 보았지만 여전히 깨지고 있습니다.
물론 계속해서 진행해도 상관은 없지만 뭔가 찝찝한 채로는 진행하기가 좀 그렇습니다.
많은 관심과 답변 부탁드립니다. 수고하세요~




경우1.서버가 utf-8 로 되어있다면 (심지어는 인코딩이 뭐든간) $_POST['값']; 으로 받으세요
get으로 url에 값 포함 시켜서 보내는게 아니라면 urldecode할 필요 없습니다.(3번 참조)
경우2. mysql 서버 설정이 utf-8 되어 있는지 확인하세요, 또한 sring 과 관련된 varchar 와같은 칼럼의 구조가
utf8_general_ci 뭐 이런걸로 되어있는지 확인하세요.
경우3.
multiEntity.addPart("이름", new StringBody("이름", Charset.forName("UTF-8")));
이렇게 보내보세요