JSON을 이용해서 Android앱에서 JSP로 한글 UTF-8 전송하기

2013. 1. 16. 02:05프로그래밍/Android

728x90
반응형

안드로이드 앱에서 JSON을 이용해서 서버의 JSP와 연동을 하는 경우 한글이 깨지는 경우가 있습니다.

개인적으로 프로그래머로 개발을 하다보 한글문제가 발목을 잡을때가 많습니다. 그리고 3개의 부분에서 모두 UTF-8로 변환해서 사용하면 한글은 문제 없이 구현할 수 있었습니다.


구조는 다음과 같습니다.

 Android App -> JSON -> Tomcat -> MySQL



다음은 Android App의 소스 부분입니다.


//JSON을 이용해서 한글 텍스트 서버로 전송할때...
JSONObject json=new JSONObject();
json.put("userid",USERID);      
json.put("nick", NICK);   
json.put("type", TYPE);   
json.put("category",  CATGORY);   
json.put("content",  CONTENT);  


HttpURLConnection conn = (HttpURLConnection) new URL(m_ServerRootDir+"jsp/uploadPost.jsp").openConnection();  

conn.setDoOutput(true);        

OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

wr.write(json.toString());

wr.flush();



//서버의 결과를 JSON형식으로 받아볼때.

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

String line;

while ((line = rd.readLine()) != null) 

{

sb.append(line + "\n");

}

wr.close();

rd.close();

conn.disconnect();

conn = null;

        

String JSON_DATA = sb.toString();

JSONObject json2=new JSONObject(JSON_DATA);

String m_Result = json2.getString("m_result");  



JSP에서 JSON정보를 읽어오는 부분은 다음과 같습니다.

<%@ page contentType="application/json; charset=UTF-8" pageEncoding="UTF-8"%>
...
JSONObject obj=new JSONObject();
JSONObject json=new JSONObject();

try
String data=null; 
InputStream is = request.getInputStream(); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
byte buf[] = new byte[1024]; 
int letti; 
while ((letti = is.read(buf)) > 0) 
baos.write(buf, 0, letti); 
data = new String(baos.toByteArray(),"utf-8"); 
json=new JSONObject(data);
}
catch(Exception e)
//out.write("ERROR :  '" + e + "'<br/>");

String USERID = json.getString("userid");

//위와 같이 수신해서 활용하고 다시 JSON형식으로 되돌려 주면 됩니다.


그리고 Mysql에서느 utf-8로 database와 table을 설정하시면 됩니다. 뭐 소프트웨어 개발분야가 나는되는데 다른 분은 안되는 경우가 참 많습니다. 그건 수만가지의 환경과 설정의 차이때문이겠조...

개발자분들이 가장 쉽게 하고 많이 하는 말입니다. "저는 이렇게 해서 됬어요...^^" 이거 해결하는데 한 2주는 걸린것 같습니다. 그래도 안풀리던 문제가 풀릴 때의 느낌은...이맛에 개발하곤 합니다...ㅜㅜ

오늘도 안드로이드 앱을 개발하시면서 한글 문제로 머리짜고 계실분들을 위해서 조금이나마 도움이 되었으면 고맙겠습니다. 감사합니다.


728x90
반응형