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
운영게시판
최근게시물
PostgreSQL Q&A 3721 게시물 읽기
No. 3721
Re: Postgres7.1에jdbc로 한글을 입력할때 문제
작성자
이경익
작성일
2001-12-07 17:57
조회수
2,071

자답을 쓰게 되는군요

 

문제는 configure시 인코딩옵션에 있었읍니다.

 

우선 컴파일 할때에 많은 분들이 --enable-multibyte=EUC_KR로 설정하시는 것같은데 제 경우에는 위와 같이 옵션을 주면 $PG_HOME/bin/pg_encoding이 만들어지지를 않았읍니다.

version 7.1.3에서입니다. 다른 버전에서 어떨지 알수없읍니다.

 

$PG_SOURCE/src/bin/pg_encoding/ 에 있는 파일 컴파일 되지 않게 됩니다 그냥 --enable-multibyte 만주고 컴파일 하면 됩니다.

 

./configure --enable-mutibyte --with-java

 

그러면 initdb를 할때 -E EUC_KR 옵션을 주어 DB를 생성할수가 있읍니다

 

 

[postgres@roadseeker bin]$ psql -l

List of databases

Database | Owner | Encoding

-----------+----------+----------

photodb | postgres | EUC_KR

postgres | postgres | EUC_KR

template0 | postgres | EUC_KR

template1 | postgres | EUC_KR

(4 rows)

 

를 통해 확인해 볼수 있읍니다

 

그후 아래코드중 인코딩 부분을 처리하지 않고 입력을 하시면 문제가 없을 것입니다.

 

--------------------------------------------------------------

import java.io.*;

 

public class PostgresAtHangl {

 

public Connection dbCon;

public PreparedStatement stmt;

 

public PostgresAtHangl () {

 

try {

String driver ="org.postgresql.Driver";

String dbURL = "jdbc:postgresql://192.168.0.16/photodb";

Class.forName(driver);

dbCon = DriverManager.getConnection(dbURL, "photodb", "photodb");

 

StringBuffer sql = new StringBuffer(512);

sql.append("UPDATE roll set description = ? where id =110;");

String source = "한글이 입력이되지 않는 이유는 무엇인가 this is difficult thing";

 

//String target = new String( source.getBytes("8859_1"), "EUC_KR" );

stmt = dbCon.prepareStatement(sql.toString());

stmt.setString(1, source);

 

int result = stmt.executeUpdate();

//System.out.println(target);

System.out.println(source);

 

}

catch(Exception e) {

System.out.println("데이타베이스에 연결을 할수가 없습니다." + e);

}

 

 

}

 

public static void main (String[] args) {

 

new PostgresAtHangl();

System.out.println("성공적으로 업데이트 하였읍니다.");

}

}

------------------------------------------------------------------

 

 

-- 이경익 님이 쓰신 글:

>> 다음과 같은 간단한 예제로 테스트를 해보았습니다.

>>

>> db에는 ??로 입력이 됩니다.

>>

>> 콘솔에서는 입력이 정상적으로 이루어지는데

>> jdbc를 이용하여 입력을 하려고하면 문제가 발생합니다.

>>

>> 몇몇 게시판에 올라온 글을 참조해서 만든 예제인데 잘되지를 않아요

>> 왜그럴까요 ?

>>

>> 이와 같은 에러를 격거나 해결하신분은 리플을 달아 주시면 감사히 읽겠읍니다

>>

>>

>>

>>

>> import java.util.*;

>> import java.math.*;

>> import java.sql.*;

>> import java.io.*;

>>

>> public class PostgresAtHangl {

>>

>> public Connection dbCon;

>> public PreparedStatement stmt;

>>

>> public PostgresAtHangl () {

>>

>> try {

>> String driver ="org.postgresql.Driver";

>> String dbURL = "jdbc:postgresql://192.168.0.16/photodb";

>> Class.forName(driver);

>>

>> //게시판에 올라온 글중에 getConnection() 메소드를 오버라이드

>> // 해 보라는 분이 있어 해보았읍니다.

>>

>> dbCon = getConnection(dbURL, "photodb", "photodb");

>>

>> StringBuffer sql = new StringBuffer(512);

>> sql.append("UPDATE roll set description = ? where id =110;");

>> String source = "한글";

>>

>> //그리고 문자를 인코딩하여 db에 저장합니다.

>> String target = new String( source.getBytes("8859_1"), "KSC5601" );

>>

>> stmt = dbCon.prepareStatement(sql.toString());

>> stmt.setString(1, target);

>>

>> int result = stmt.executeUpdate();

>>

>> //각각의 인코딩을 출력해 봅니다.

>> System.out.println(source);

>> //source는 정상적으로 "한글"이 출력됩니다

>>

>> System.out.println(target);

>> //인코딩이 이루어진 것은 "??"로 출력이됩니다.

>>

>> }

>> catch(Exception e) {

>> System.out.println("데이타베이스에 연결을 할수가 없습니다." + e);

>> }

>>

>>

>> }

>>

>> public static void main (String[] args) {

>>

>> new PostgresAtHangl();

>> System.out.println("성공적으로 업데이트 하였읍니다.");

>> }

>>

>> //게시판에 있는 getConncetion() 메소드를 오버라이드하는 부분입니다.

>>

>> public static Connection getConnection(String url, String user, String passwd) throws SQLException {

>>

>> java.util.Properties props = new java.util.Properties();

>> if(user!=null) props.put("user",user);

>> if(passwd!=null) props.put("password",passwd);

>> props.put("charSet","8859_1");

>> return (DriverManager.getConnection(url,props));

>> }

>> }

[Top]
No.
제목
작성자
작성일
조회
3731pgsql에는 zerofill이 없나요? [1]
이은호
2001-12-13
1504
3729CREATE CONSTRAINT TRIGGER에 대한 질문입니다. [1]
소타
2001-12-12
1705
3730┕>넘 무성의한 코멘트같아 추가로 적습니당.. [1]
김대성
2001-12-13 00:15:40
1801
3724[질문] 왕처버 질문입니다.
정성훈
2001-12-10
1402
3725┕>Re: [질문] 왕처버 질문입니다.
fith
2001-12-10 19:29:19
1481
3720Postgres7.1에jdbc로 한글을 입력할때 문제
이경익
2001-12-07
1412
3721┕>Re: Postgres7.1에jdbc로 한글을 입력할때 문제
이경익
2001-12-07 17:57:39
2071
3719죄송합니다만 아무리찾아도 없기에 또다시질문올립니다.
조원준
2001-12-06
1555
3718[질문]libpq - C Library 예제파일 실행해보신분께 궁금한게 있습니다.
고기원
2001-12-06
1478
3722┕>Re: [질문]libpq - C Library 예제파일 실행해보신분께 궁금한게 있습니다.
김명화
2001-12-07 18:21:57
1755
3726 ┕>Re: Re: 정말 감사합니다.. ^^; 덕분에 컴파일은 성공이네요..
고기원
2001-12-11 09:47:00
1454
3717DB이동시에 문제점..
정철희
2001-12-06
1493
3735┕>Re: 엄청 골치 아프시겠네요.
김상기
2001-12-14 08:43:28
1527
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다