CI 묻고 답하기

제목 php 에서 오라클 DB를 가져오면 한글이 ?? 로 깨지는경우
카테고리 CI 2, 3
글쓴이 질문학생 작성시각 2017/02/10 13:50:19
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 15906   RSS

안녕하세요. 다들 날씨가 추워병쨉 조심하세요

 

현재 오라클 쿼리돌릴시에 한글은 모두 정상적으로 나옵니다.

 

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/oracleexport ORACLE_HOME=$ORACLE_BASE/product/10.2.0.3/clientexport TNS_ADMIN=$ORACLE_BASE/network/adminexport NLS_LANG=American_America.KO16KSC5601export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATHexport LANG=ko_KR.eucKRexport ORACLE_TERM=vt100NLS_LANG=AMERICAN_AMERICA.KO16KSC5601PATH=$PATH:$HOME/bin:/usr/local/firstworks/binexport PATH NLS_LANGunset USERNAMEapache php 웹서버의  .bash_profile 입니다.DB서버에 접속한후 쿼리 돌릴 시 나오는 데이터입니다.select * from sys.props$ where name='NLS_CHARACTERSET';NLS_CHARACTERSETKO16KSC5601Character setselect * from sys.props$ where name='NLS_LANGUAGE';NLS_LANGUAGEAMERICANLanguage입니다.DB서버의 ORACLE .bash_profile 입니다.export LANG=Cexport ORACLE_BASE=/oracleexport ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1export ORACLE_SID=shonmdbexport ORACLE_HOME_LISTNER=$ORACLE_HOME/bin/lsnrctlexport PATH=$PATH:$ORACLE_HOME/binexport DISPLAY=:0export LD_LIBRARY_PATH=$LD_LIBARY_PATH:$ORACLE_HOME/lib:/lib:/usr/libexport NLS_LANG=American_America.KO16KSC5601KO16KSC5601 로 둘다 맞춘거같은데.. 왜 ??로 나오는지 이해가 가지않습니다 ....

 

 

아참 그리고 함부로 

 

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 버전과 환경설정 호환을 보고 하셔야합니다.

정말주의하세요...

 다음글 CI3.0세션 관련해서 질문드립니다.. (1)
 이전글 헤더 질문입니다. (6)

댓글

변종원(웅파) / 2017/02/10 14:13:07 / 추천 1

ci는 기본적으로 utf-8입니다.

오라클에서 가져온 한글을 utf-8로 변환해서 출력해보세요.

질문학생 / 2017/02/10 15:35:53 / 추천 0

글에서 보시면알겠지만 오라클 캐릭터셋을 바꾸다가 데이터베이스를 다날렷습니다.

CI 캐릭터셋을 database.php 에서 설정할수있지않나요 ?

 

카카메론바 / 2017/02/10 15:56:24 / 추천 1

DB 연결하지 전에 PHP 상에서 아래 코드를 넣으면 되지 않을까 싶습니다.

오래전에 oracle 디비 이용할때.... 저도 엄청 삽질했었는데...

아래 코드를 제가 현재에 와서 테스트는 해보지 못했습니다.

DB 연결전에 해당 코드를 붙여넣고 테스트 해보셨으면 합니당 ㅜ.ㅜ

putenv("NLS_LANG=KOREAN_KOREA.KO16KSC5601");

질문학생 / 2017/02/10 16:41:30 / 추천 0

이미해본방법인데 ㅠㅜㅠ 아쉽게도 안되네요 신경써주셔서 감사합니다 ㅜㅜ 

 

변종원(웅파) / 2017/02/10 20:16:14 / 추천 0
질문학생/ 답글에 오라클 캐릭터셋을 바꾸라는 내용이 있던가요? ㅎㅎ