안드로이드 - jsp - mysql에서 한글쿼리가 제대로 동작안됩니다... jsp에서의 한글인코딩문제인거 같은데

 

 

안드로이드에서는 모든 설정을 utf-8로 해놨습니다. 페이지인코딩까지 utf-8입니다.

    UrlEncodedFormEntity entityRequest = new UrlEncodedFormEntity( nameValuePairs, "UTF-8");

    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);

    login.loadData(result, "text/html", "UTF-8");

 

mysql의 server, db, client, conn의 characterset은 모두 euckr입니다.

 

 

 String sname = "가";

nameValuePairs.add(new BasicNameValuePair("sname", sname));

한글 "가"를 보내서 쿼리하면 안되는데

 

 String sname = "a";

nameValuePairs.add(new BasicNameValuePair("sname", sname));

영어 a를 보내면 쿼리가 잘 동작합니다.

 

 

밑에는 jsp 풀소스입니다... 도움 좀 부탁드립니다.

 

<%@ page contentType="text/html; charset=utf-8" language="java" %>
<%@ page import="java.sql.*" %>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
<%
 Connection con = null;
 PreparedStatement pstmt = null;
 ResultSet rs = null;

 try {
  String DB_SERVER = "localhost:3306";
  String DB_SERVER_USERNAME = "root";
  String DB_SERVER_PASSWORD = "123123";
  String DB_DATABASE = "test";

  String jdbcUrl = "jdbc:mysql://" + DB_SERVER + "/" + DB_DATABASE;

  Class.forName("com.mysql.jdbc.Driver");
  con = DriverManager.getConnection(jdbcUrl, DB_SERVER_USERNAME, DB_SERVER_PASSWORD);
  %>
  <%
 String enc1 = "8859_1";
 String enc2 = "euc-kr";
 String enc3 = "utf-8";

  String sname = request.getParameter("sname");
  String ch_sname = new String(sname.getBytes(enc3),enc2);         // utf-8로 인코딩된 한글을디비 인코딩 euckr로 바꿔봤습니다
  
  String query =  "select * from han where name = '"+sname+"' ";
  pstmt=con.prepareStatement(query);
  rs=pstmt.executeQuery();

  int count=0;
  while(rs.next()) {
  
   String id=rs.getString("id");
   String name = rs.getString("name");
   %>
   <p>[<%=count%>] id : <%=id%>, name : <%=name%></p>
   <%
   count++;
  }
 

 } catch(Exception e) {
  e.printStackTrace();
  out.println("Database 연결 실패");

 }
%>
</body>
<html>

 

 

혹시 예제소스나.... 해결방법좀 알려주세요..