database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
ㆍCUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
CUBRID Q&A 386 게시물 읽기
No. 386
JDBC에서 한글깨지는데..
작성자
힘들어라
작성일
2007-07-19 12:57
조회수
5,338

UTF-8환경의 리눅스박스에 웹서버가 있고 ( 아파치 + tomcat5 )

윈도에 unisql이 있는데 

한글데이타 처리를 어떻게 하시나요?

웹에서 접근하는거 말고는 DB작업은 윈도쪽 클라이언트에서 처리함니다.

db이름도 한글이라 접근도 안되고 이름을 영문으로 바꿔 처리해봐도 한글 데이타가 깨져서...

리눅스박스에 postgres,mysql이 utf-8로 사용중이어서 tomcat의 설정을 바꿔서는 안되고

접근하는 jsp페이지에서 해결하려고 하는데 어렵네요


시험해본거는( 해봐야 jsp페이지에서 설정몇가지 쭉 바꿔가면 해본거 밖에 없지만 )

- <%@ page contentType="text/html; charSet=utf-8"%>

- request.setCharacterEncoding("utf-8");

- new String( getBytes("utf-8"),"utf-8");

위의 굵은밑줄부분을 ( utf-8, cp949, euc-kr, 8859_1 ) 네가지를 조합해가며 시험해봤는데 이런 방법으론 안되더라구요

제 처리방법중 뭐가 문제인지요




이 글에 대한 댓글이 총 1건 있습니다.
큐브리드는 데이터베이스 차원에서 문자셋을 가지고 가지 않습니다. 그렇기 때문에 유니코드 데이터를 처리하는데 별도의 문자셋을 지정하지 않습니다. 단, 큐브리드 환경 변수 CUBRID_BYTES_PER_CHAR = 1로 설정하고, Connection을 UTF-8로  접속(아래 펌글 참조)하면 됩니다. 환경 변수 설정은  내컴퓨터-속성-고급-환경변수-시스템환경변수에 설정하고 재부팅해야 적용됩니다. 혹, 안되시면 서버 버전과 JDBC 버전을 같이 알려주시기 바랍니다. ^^


확장한글을 처리하기 위한 방법 (큐브리드 홈페이지 FAQ&Tip에서 퍼옴)
 

1. 확장한글을 DBMS에 입력할 때 MS949 charset을 사용하는 방법
JSP, WAS VM의 charset을 MS949를 사용하면 확장한글을 깨지지 않는 상태로 DBMS에 저장하고 그대로 웹페이지 및 DB툴(Visual-SQL)등을 통해 정상적인 데이터를 볼 수 있습니다.

2. 확장한글을 DBMS에 입력할 때 UTF-8 charset을 사용하는 방법
JSP, WAS VM의 charset을 UTF-8을 사용하면 확장한글을 DBMS에 저장하고 웹페이지를 통해 깨지지 않는 상태로 볼 수 있습니다. 그리나 DB툴(Visual-SQL)을 이용해서 보면 DBMS에는 깨져있는 것처럼 보일 것입니다.
기본적으로 UniSQL DB는 DB에 입력한 charset그대로를 받아들입니다.
이런 연유로 입력은 UTF-8로 하고 DB툴을 통해 볼 때는 보는 터미널의 기본 charset이 UTF-8이 아니면 깨져 보이는 것입니다.

3. Tomcat을 통해 UTF-8 코드를 DB에 입력하는 방법
((cubrid.jdbc.driver.CUBRIDConnection)conn).setCharset("UTF-8")과 같이 CAST하는 것은 WAS에 명시적으로 해당 Connection Charset을 설정하는 방법이나 WAS의 POOL 구현 방식에 따라 ClassCastException이 발생할 수 있을 수도 있습니다.
이럴 때는 Config파일인 server.xml의 DataSource의 Parameter인 url부분의 설정에 charset=UTF-8을 추가하면 됩니다.
    
server.xml 설정 예      
        <Context docBase="C:/TOMCAT/docs" path="">
            <Resource name="DBCon" auth="Container"  type="javax.sql.DataSource"/>
            <ResourceParams name="DBCon">
              <parameter>
                <name>factory</name>
                <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
              </parameter>
              <parameter>
                <name>driverClassName</name>
                <value>cubrid.jdbc.driver.CUBRIDDriver</value>  
              </parameter>
              <parameter>
                <name>url</name>
                <value>jdbc:cubrid:localhost:33000:subway:::charset=UTF-8</value>
              </parameter>
              <parameter>
                <name>username</name>
                <value>public</value>
              </parameter>
              <parameter>
                <name>password</name>
                <value>public</value>
              </parameter>
              <parameter>
                <name>maxActive</name>
                <value>10</value>
              </parameter>
              <parameter>
                <name>maxIdle</name>
                <value>2</value>
              </parameter>
              <parameter>
                <name>maxWait</name>
                <value>-1</value>
              </parameter>
            </ResourceParams>
        </Context>    
        
이상으로 CUBRID에서 Unicode나 확장한글을 사용하는 것에 대해 간략히 정리해 보았습니다.
백정한님이 2007-07-19 13:44에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
389Q.윈도우 환경에서 개발할 시
조성배
2007-07-20
3589
388Q.[질문] ODBC에서 쿼리 쓰는데.. [1]
이지현
2007-07-19
3404
387Q.unicas 실행하기 [1]
안성민
2007-07-19
3749
386JDBC에서 한글깨지는데.. [1]
힘들어라
2007-07-19
5338
385Q.질의 편집기 단축키 기능이 없나요? [1]
조성배
2007-07-18
3302
384Q.날짜 칼럼에 대하여 [1]
김성수
2007-07-18
3722
383Q.서버2003 R2버전에서 오류 [1]
문종범
2007-07-18
3776
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다