안녕하세요.
한글과 일어를 같이 쓰고 싶어 UTF-8을 이용하려 합니다.
우선 \'江戸川区(애도가와구)\'를 입력하고 출력하는 간단한 소스를 만들어 테스트 해봤는데,
일본어의 두번째 네번째 글자가 ?로 출력되네요.
당연한 얘기겠지만 한글빼고 일어만 입력해도 같은 결과입니다.
어떻게하면 안깨질까요?
큐브리드에 특별히 언어 설정이 없고 그냥 입력한대로 들어간다는 글 보았습니다.
이클립스 편집기 환경도 UTF-8이고...
큐브리드메니져 - 도구 - 질의 편집기 옵션 - 캐릭터셋 UTF-8로 설정하고 조회해봐도 같은 결과입니다.
== 환경 ==
우선 디비 테이블명은 table1이고, 컬럼은 address VARCHAR(100)만 하나 있습니다.
컨넥션 풀 설정 되어있고 잘 작동합니다.
dba계정으로 접속중입니다.
testCubrid.jsp 소스
=================================================================================
<%@ page contentType=\"text/html; charset=utf-8\"%>
<%@ page import=\"java.sql.*\" %>
<%@ page import=\"javax.sql.*\" %>
<%@ page import=\"javax.naming.*\" %>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
Context initContext = new InitialContext();
DataSource ds = (DataSource) initContext.lookup(\"java:comp/env/jdbc/CUBRIDDS\");
conn = ds.getConnection();
stmt = conn.createStatement();
//### 데이터 베이스에 자료 입력 ###
String str = \"江戸川区(애도가와구)\";
String strEnc = new String(str.getBytes(\"8859_1\"),\"UTF-8\");
String sql1 = \"INSERT INTO table1( address ) VALUES( \'\" + str + \"\' )\";
String sql2 = \"INSERT INTO table1( address ) VALUES( \'\" + strEnc + \"\' )\";
stmt.executeUpdate(sql1);
stmt.executeUpdate(sql2);
//### 화면 출력 ###
rs = stmt.executeQuery(\"select * from table1\" );
while(rs.next()){
String address = rs.getString(\"address\");
//String addressEnc = new String(address.getBytes(\"8859_1\"),\"UTF-8\"); //이놈으로 출력하면 두값 모두 ????(?????)로 출력됨.
out.print( address );
out.println(\"<br/>\");
}
}catch(Exception e){
e.printStackTrace();
}finally{
rs.close();
stmt.close();
conn.close();
}
%>
=================================================================================
토요일, 일요일 여기 Q/A게시판에 접속 안되더군요.
덕분에 일요일 확 놀아버렸지만... ^^
꼭 좀 해결해 주세요.
제 짧은 지식으로는 모르겠습니다.
|