jsp mysql 에서 한글로 입력받는 방법..
글쓴이: aNsITAte / 작성시간: 금, 2005/07/22 - 11:11오후
http://sapius.dnip.net/~sapius/zpboard/list.jsp
이상하게 한글이 깨져서 나오네요.
아무래도 mysql 에서 불러올때 코드셋이 틀력서 그런거 같은데..
어떻게 해결해야할까요? 설명으로 나온책에는 이런 말은 없는데 ㅡ.ㅡ;;
<%@page contentType="text/html; charset=euc-kr" import="java.sql.*,java.util.*"%>
<%
/*
* Data Base Connection to Zeropage BBS
*/
String DB_URL = "jdbc:mysql://165.194.17.15:3306/zeropage";
String DB_USER = "ID";
String DB_PASSWORD = "PASS";
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e) {
out.println("DB Driver eror<BR/>\n");
e.printStackTrace();
}
Connection conn;
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
if (conn == null)
out.println("Connection error<BR/>\n");
Statement stmt;
stmt = conn.createStatement();
if (stmt != null) out.println("Connection SUCCESS<BR/>\n");
%>
<%
/* get data from zeropage mysql server. */
// String query = "select * from open where ";
String query = "select * from open where id>0 AND id<10";
ResultSet result = stmt.executeQuery(query);
%>
<%
Vector id = new Vector();
Vector date = new Vector();
Vector loginid = new Vector();
Vector author = new Vector();
Vector email = new Vector();
Vector title = new Vector();
Vector content = new Vector();
Vector count = new Vector();
while (result.next()) {
id.add(result.getString("id"));
date.add(result.getString("date"));
loginid.add(result.getString("loginid"));
author.add(result.getString("auther"));
email.add(result.getString("email"));
title.add(result.getString("title"));
content.add(result.getString("content"));
count.add(result.getString("count"));
}
%>
<%
out.println("<table style='border-width:1px; border-style:dotted;'>");
out.println("<tr><td>ID</td><td>DATE</td><td>AUTHOR</td><td>EMAIL</td><td>TITLE</td><td>CONTENT</td><td>COUNT</td></tr>");
for (int i=0; i<id.size(); i++) {
out.println(
"<!--"+i+"-->\n"+
"<tr>\n<td>"+id.get(i)+"</td>\n"+
"<td>"+date.get(i)+"</td>\n"+
"<td>"+author.get(i)+"</td>\n"+
"<td>"+email.get(i)+"</td>\n"+
"<td>"+title.get(i)+"</td>\n"+
"<td>"+content.get(i)+"</td>\n"+
"<td>"+count.get(i)+"</td>\n</tr>"
);
}
out.println("</table>");
%>
<%
//Connection close.
stmt.close();
conn.close();
%>
Forums:


해결했네요. -_-;;
JSP하면서 삽질 정말 넌덜머리 날 정도로 하는 것 같습니다.
JSP보타 톰캣설정이 너 어려운것 같네요.
어쨌든 mysql Connector/J 가 3.1이 되면서 문자셋을 설정하는 예약어가
바뀐것 같습니다.
(정확한건지 아니면 그런건지는 ;;)
이전버전의 경우 이런식으로 하면 SQL에서 읽어온 데이터를 한글로 출력하는데 큰 문제가 없었습니다.
그런데 3.1버전에서 위와 같은 소스로 돌려보니 문제가 생기더라구요.
mysql 사이트에서 문서를 찾으니까
http://dev.mysql.com/doc/connector/j/en/cj-character-sets.html
MySQL Character Set Name Java-Style Character Encoding Name
usa7 US-ASCII
big5 Big5
gbk GBK
sjis SJIS
gb2312 EUC_CN
ujis EUC_JP
euc_kr EUC_KR
latin1 ISO8859_1
latin1_de ISO8859_1
german1 ISO8859_1
danish ISO8859_1
latin2 ISO8859_2
czech ISO8859_2
hungarian ISO8859_2
croat ISO8859_2
greek ISO8859_7
hebrew ISO8859_8
latin5 ISO8859_9
latvian ISO8859_13
latvian1 ISO8859_13
estonia ISO8859_13
dos Cp437
pclatin2 Cp852
cp866 Cp866
koi8_ru KOI8_R
tis620 TIS620
win1250 Cp1250
win1250ch Cp1250
win1251 Cp1251
cp1251 Cp1251
win1251ukr Cp1251
cp1257 Cp1257
macroman MacRoman
macce MacCentralEurope
utf8 UTF-8
ucs2 UnicodeBig
보니까 JAVA 스타일의 인코딩 명이 EUC_KR 입니다.
그래서
{{{
String DB_URL = "jdbc:mysql://165.194.17.15:3306/zeropage";
String DB_OPT = "useUnicode=true&characterEncoding=EUC_KR";
String DB_USER = "ID";
String DB_PASSWORD = "PASSWD";
Connection conn = DriverManager.getConnection(DB_URL+'?'+DB_OPT, DB_USER, DB_PASSWORD);
}}}
로 지정하니까 제대로 나오네요.
EUC-KR 은 안되구요. 가운데 대쉬는 반드시 언더바로 해야합니다.
http://sapius.dnip.net/~sapius/zpboard/list.jsp
이렇게 잘 나오네요.
그립다는 것은 아직도 네가 내 안에 남아 있다는 뜻이다.
그립다는 것은 지금은 너를 볼 수 없다는 뜻이다.
볼 수는 없지만 보이지 않는 내 안 어느 곳에 네가 남아 있다는 뜻이다.
-이정하의 《혼자 사랑한다는 것은》중에서-
댓글 달기