윈XP쓰고 있는데 도스창에서 psql로 function 생성할때
Insert 문장에 한글이 들어가면 "UNICODE"어쩌고 나오는데
어찌하면 될까요 . PGADMIN 에서는 잘되는데 쉘상에서는 잘안되네요
이런 문제가 발생할 것 같아서,
http://database.sarang.net/?inc=read&aid=5748&criteria=pgsql&subcrit=news&id=&limit=20&keyword=&page=1
문서를 미리 마련해 두었습니다.
꼼꼼히 읽어보세요.
김상기님이 쓰신 여러 문서를 읽어보시면 initdb 시 encoding과 실제 사용시 client_encoding 설정하는 방법이 나옵니다.
링크 걸어주신 데로 참고하시면 되고요.
XP 에서 사내 DB를 돌릴 일은 없을테니까 postgresql.conf 를 직접 수정하셔도 됩니다.
postgresql.conf 를 보시면, (Win32에서는 기본설치시 /data 디렉토리 내부)
# - Locale and Formatting -
#datestyle = 'iso, mdy'#timezone = unknown # actually, defaults to TZ environment setting#australian_timezones = false#extra_float_digits = 0 # min -15, max 2#client_encoding = sql_ascii # actually, defaults to database encodingclient_encoding = uhc # actually, defaults to database encoding
# These settings are initialized by initdb -- they might be changedlc_messages = 'C' # locale for system error message stringslc_monetary = 'C' # locale for monetary formattinglc_numeric = 'C' # locale for number formattinglc_time = 'C' # locale for time formatting
부분을 수정하면 됩니다.
제 경우는 win32 에서 설치할때도 기본 제공하는 initdb 옵션을 사용하지 않고
initdb ../data -E=UNICODE --no-locale 로 설치하고요.
테스트하면 다음 과 같습니다.
mytest=# INSERT INTO pmas01tt(userno, empno, kname)mytest-# VALUES('0002', '0003', '박인서');INSERT 17237 1mytest=# SELECT userno, empno, kname FROM pmas01tt;WARNING: ignoring unconvertible UTF-8 character 0xdac0 userno | empno | kname--------+-------+-------- 0001 | 0002 | 묑彛 # client_encoding 을 적절히 설정하지 않은 상태 0002 | 0003 | 박인서 # client_encoding 을 강제로 지정(2 rows)
mytest=# \l List of databases Name | Owner | Encoding-----------+----------+---------- mytest | ispark | UNICODE template0 | postgres | UNICODE template1 | postgres | UNICODE(3 rows)
위는 모든 DB 는 unicode 를 사용하도록 맞추어 두고, client_encoding 만 바꾸어서 사용하는 예입니다.