개발 Q&A

제목 프로시저 호출 관련하여 질문드립니다.(PDO_SQLSRV, PDO_ODBC)
글쓴이 오징어1 작성시각 2016/08/31 10:31:25
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 12400   RSS

현재 윈도우, 리눅스 두곳에서 작업을 진행하고 있습니다.

DB서버는 SQL SERVER이고 프로시저를 호출해서 데이터를 INSERT하는 부분에서 한글 인코딩 문제로 어려움을 겪고 있습니다.

 

윈도우에서는 PDO_SQLSRV를 이용하고 리눅스에서는 PDO_ODBC를 이용하고 있습니다.

현재 프로시저도 수정할 수 없고 테이블도 수정할 수 없는 상황입니다.

알아보니 MSSQL은 varchar 데이터타입에 한글을 입력할 수 없다고 하더군요

그래서 varchar에 한글을 입력하기 위해서는 N'한글' 이런식으로 값 앞에 N을 붙여서 nvarchar형태로 인식하도록 하면

입력이 가능하더라고요

 

윈도우에서 PDO_SQLSRV로 프로시저를 호출하면 profiler로 봤을 때

 declare @p1 int
set @p1=2
exec sp_prepexecrpc @p1 output,N'dbo.hp_mycafeboard_save_test',N'120',N'차량판매후기',N'999',N'0',N'0',N'0',N'0',N'관리자',N'테스트',N'20160830',N'111',N'1',N'',N'',N'',N'',N'',N'',N'',N'',N''
select @p1

이런식으로 값 앞에 N이 자동으로 붙어서 INSERT가 문제 없이 잘 되는데

 

리눅스에서 PDO_ODBC로 프로시저를 호출하면 profiler로 봤을 때

declare @p1 int
set @p1=1
exec sp_prepexecrpc @p1 output,N'dbo.hp_mycafeboard_save_test',@MNo=122,@BoardName='차량판매후기',@GroupNo=999,@SubGroup=0,@Category1=0,@Category2=0,@Category3=0,@Writer='관리자',@SubJ='테스트',@RegDate='20160830',@EditPass='111',@Cont='1',@UpFile1='',@UpFile2='',@Hand='',@MakerCode='',@ItemsCode='',@CarCode='',@YYMM='',@MbSido='',@MbCity=''
select @p1

이런식으로 값 앞에 N이 없어서  한글 입력시 깨져서 INSERT가 되고 있습니다.

 

프로시저 호출하는 소스는 동일하고

 

수동으로라도 리눅스에서 N을 붙여서 한글이 안깨지게 하고 싶습니다.

 

혹시 비슷한 경험 해결하신분 계신가여?ㅠㅠ

도와주세요ㅠㅠㅠㅠ


첨부파일 프로시저 콜.JPG (39.6 KB)
 다음글 마이페이지를 만들고 있는데요 (3)
 이전글 다른 서버에있는 html 소스 가져오기 (3)

댓글

한대승(불의회상) / 2016/08/31 11:31:51 / 추천 0
리눅스용 pdo_sqlsrv 로 테스트 해보세요.
오징어1 / 2016/08/31 11:35:53 / 추천 0
리눅스용 pdo_sqlsrv는 없던데요?ㅠㅠ
/ 2016/08/31 12:08:08 / 추천 0
인코딩이 깨지면 접속하는 클라이언트나 서버 설정에서 인코딩 설정쪽 보면 되지 않을가요??
배강민 / 2016/08/31 12:57:08 / 추천 0
CI 질문 게시판에도 올리신 동일한 질문글은 삭제했습니다.