안녕하세요. 다들 날씨가 추워병쨉조심하세요
현재 오라클 쿼리돌릴시에 한글은 모두 정상적으로 나옵니다.
DB캐릭터셋은 KO16KSC5601 입니다.
centos 6.4 오라클 10g , sqlrelay를 사용하여 오라클을 붙습니다 프레임p은 CodeIgniter를 사용합니다.
web서버에서 php 에서 db 를 연결한후 쿼리를 실행할때 한글이 ???로 팁들어옵니다.
제가 생각하는걸로는
1. DB서버에서 WEB 서버로 가져올때 한글이 깨진다.
2. CodeIgniter 안에서 캐릭터셋 설정을 잘못해줬기 때문에 한글이 깨진다.
이부분을 알수있는방법이없을까요 ?
현재 잘되고있는 운영서버랑 제가만든서버랑 비교하는데 .. 틀린점을 모르겠네요...
=============지난글==================
안녕하세요
다들 바쁘신데 고생많으십니다.
현재 상황입니다.
root 게정의 .bash_profile 입니다.
export ORACLE_BASE=usr/lib/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0.3/client
export TNS_ADMIN=$ORACLE_BASE/network/admin
export NLS_LANG=American_America.KO16KSC5601
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export LANG=ko_KR.eucKR
export ORACLE_TERM=vt100
NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
PATH=$PATH:$HOME/bin:/usr/local/firstworks/bin
export PATH NLS_LANG
unset USERNAME
apache php 웹서버의 .bash_profile 입니다.
DB서버에 접속한후 쿼리 돌릴 시 나오는 데이터입니다.
select * from sys.props$ where name='NLS_CHARACTERSET';
NLS_CHARACTERSETKO16KSC5601Character set
select * from sys.props$ where name='NLS_LANGUAGE';
NLS_LANGUAGEAMERICANLanguage
입니다.
DB서버의 ORACLE .bash_profile 입니다.
export LANG=C
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=shonmdb
export ORACLE_HOME_LISTNER=$ORACLE_HOME/bin/lsnrctl
export PATH=$PATH:$ORACLE_HOME/bin
export DISPLAY=:0
export LD_LIBRARY_PATH=$LD_LIBARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=American_America.KO16KSC5601
KO16KSC5601 로 둘다 맞춘거같은데.. 왜 ??로 나오는지 이해가 가지않습니다 ....
아참 그리고 함부로
update sys.props$ set value$='UTF8' where name='NLS_CHARACTERSET';
update sys.props$ set value$='UTF8' where name='NLS_NCHAR_CHARACTERSET';
update sys.props$ set value$='KOREAN_KOREA.UTF8' where name='NLS_LANGUAGE';
이런 명령어가 돌아다니는데 사용하지마세요 .. 이것때문에 데이터베이스 날렸습니다..덤프 해놓은게잇어서 다행이네요.
위와같이 언어를 바꾸는경우는 db 버전과 환경설정 호환을 보고 하셔야합니다.
정말주의하세요...
기억으론.. 예전 질문에 .. 오라클을 사용하는데 codeigniter 의 datatbase를 사용하지 않고 .. 다른 방식으로 사용 하신다고 하셨던것 같으데요 .
그 .. 어떻게 다르 방법으로 사용중이신지 써주셔야 할것 같습니다.. codeigniter 의. config 의 database에 ..캐릭터셋을 설정해주면 되는데 .. 다른 방법을
사용하고 계시다니 .. 같은 방법으로 해결되지 않을 것 같습니다.
그리고 어제 찾아보니 db의 캐릭터셋이랑.. nls_lang 의 값이 틀려도 상관 없다네요 .
문자셋 메타 설정이 잘못 됬을 가능성도 있네요.
웝 문자셋은 통신 경로 하나하나 체크해 봐야 합니다.
PHP에서 DB커넥션하는 소스를 살펴보세요.
캐릭터셋 지정하는 부분이 있을겁니다.