Microsoft MVP성태의 닷넷 이야기
sybase 의 한글 가져오기 문의 [링크 복사], [링크+제목 복사]
조회: 6942
글쓴 사람
조호찬
홈페이지
첨부 파일
 
안녕하세요

sybase 와 닷넷에 대한 구글링을 하다가 여기로 오게 되었는데 혹시 몰라 질문글 남김니다.

현재 개발 환경은

sybase DB 서버 (1)
웹서버 (2)
개발PC (3)

(2) 에서 odbc 로 (1)에 대한 연결을 설정한 상황이고, (1)의 한글을 읽어서 (2)의 화면에 표시하기 위한 개발을 (3)에서 진행 하고 있습니다.

닷넷의 OdbcConnection 클래스로 연결성공한 상황이고
그 연결 문자열은 "dsn=DSN_NAME;uid=USER_ID;pwd=PASSWORD;" 입니다.

여기서 select 문을 통해 한글을 읽어오면 한글이 깨지는데요.

string query = "select * from TABLE where AAA=AAA";
DataTable result = db.GetResult(query);
string item = result.Rows[0][0].ToString();
 
와 같이 읽어옵니다.

이 후에 item 을 바로 화면에 표시하니 한글이 깨지더군요

(3) 에서 개발 후 (2) 로 게시 하고 테스트를 하고 있어서 디버깅도 안되는 상황입니다...

혹시 도움을 받을수 있을까 글을 남깁니다.



donaricano-btn



[최초 등록일: ]
[최종 수정일: 8/23/2016 ]


비밀번호

댓글 쓴 사람
 



2016-08-23 01시44분
3에서 개발했을 때는 한글이 잘 나왔다는 건가요? 그 때도 odbc로 연결을 한 상태고요?

"item"에는 정상적으로 한글이 들어온 것을 확인하셨나요? (item 의 텍스트를 로그 파일등을 이용해 바이트 값의 배열로 한번 찍어보세요.)
정성태
2016-08-24 12시14분
[조호찬] (3) 의 환경에는 odbc 설정이 불가능한 상황이라 개발 중 테스트는 할수가 없는 상황입니다.
(2) 의 웹서버에 게시 한 후 item 값을 뿌렸을때 한글이 깨지는 상황입니다. 알려주신대로 item 값을 바이트 배열로 뿌려 봐야겠네요
[손님]
2016-08-24 12시41분
[조호찬] 알려주신 대로 로그파일을 이용해 확인해보니, (3)의 개발환경에서 임의로 한글 을 저장한 값과, (2)의 웹서버에서 utf8, euckr 인코딩으로 로깅한 값이 다른것을 확인 했습니다. 결론적으로 인코딩 문제일까요?
sybase의 문자셋이 아마 iso_1 로 되어있을텐데, 닷넷에서 어떤 문자셋으로 읽어야 할까요?
[손님]
2016-08-24 02시13분
아래의 목록에서 iso_1로 유추할 수 있는 것을 찾아보세요.

http://www.sysnet.pe.kr/2/0/1147

아니면, 모든 인코딩을 다 돌면서 출력해 정상 문자열인 경우의 값으로 찾는 것도 방법입니다.
정성태
2016-08-24 05시26분
[조호찬] 구글링으로 iso_1 의 문자셋이 iso-8859-1 이라는 걸 찾았습니다.
<a href="http://www.connectionstrings.com/ase-unsupported-charset/" target="_blank">http://www.connectionstrings.com/ase-unsupported-charset/</a>

iso-8859-1 (28591) 로 인코딩 후 ks_c_5601-1987(949) 로 변환 해도 한글이 여전히 깨지네요

<code>
System.Text.Encoding iso_1 = System.Text.Encoding.GetEncoding(28591);
System.Text.Encoding en = System.Text.Encoding.GetEncoding(949);

byte[] arr = iso_1.GetBytes(item);

name = en.GetString(System.Text.Encoding.Convert(iso_1, en, arr));
</code>


알려주신 대로 모든 문자셋을 위 코드로 변환해서 표시해보고, 텍스트 파일로 로그도 남겨봤지만 안되네요..

포기해야 하나봐요...
[손님]
2016-08-25 05시34분
[조호찬] 며칠간 삽질 하고 결국 해결했습니다.
별건 아니지만 코드 공유 합니다.

// sybase 문자셋 iso_1 은 aspnet 의 [iso 8859-1] (28591) 입니다.
// iso_1 과 ks_c_5601-1987 객체 생성
System.Text.Encoding iso_1 = System.Text.Encoding.GetEncoding(28591);
System.Text.Encoding euckr = System.Text.Encoding.GetEncoding(949);

// 한글을 iso_1 문자셋 바이트 단위로 변환합니다.
byte[] btvalue = iso_1.GetBytes(value);

// 인코딩 완료
value = euckr.GetString(btvalue);

전 마지막 부분에서 실수를 코드 실수를 했더군요.. (무분별한 구글링)

도움주신 정성태님 다시한번 감사드립니다.
하시는일 번창하시길 빌겠습니다.
[손님]
2016-08-25 09시39분
좋은 소식이군요. ^^
정성태

... 16  17  18  19  20  21  22  23  [24]  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
4809힘찬도약2/15/20177036C# 가상 시리얼 [4]
4808이길용2/9/20176782WCF 외부 접속 관련해서 질문드립니다ㅠ [1]
4807헬조선식스웨그2/8/201711757WPF의 속도에 대해서 궁금합니다. [3]
4803헬조선식스웨그2/7/20177137WPF로 메신져 메세지 박스 구현 문의 [2]
4802spowner2/6/20174589특정 범위의 값을 다른 값으로 치환하는 메소드를 만들어야 할 때 가장 빠른 방법은? [7]
4804spowner2/7/20174775    답변글 [답변]: 특정 범위의 값을 다른 값으로 치환하는 메소드를 만들어야 할 때 가장 빠른 방법은?
4805spowner2/7/20174323    답변글 [답변]: 특정 범위의 값을 다른 값으로 치환하는 메소드를 만들어야 할 때 가장 빠른 방법은? (글삭제가 안돼 재첨부합니다)파일 다운로드1
4801spowner2/3/20174710C#의 참조 동작관련하여 아이디어 문의 드립니다 [4]
4800오세운2/1/20177575C# 에서 C++ DLL임포트 질문입니다. [2]
4798손님1/29/20175410picturebox의 image.dispose [1]
4797김철환1/13/20175775책에 관한 질문입니다 [3]
4796Beren Ko1/13/20175452++ 후위연산자와 = 을 함께 사용할 때 생성되는 IL 코드 관련... [2]
4795김철환1/11/20176635이벤트 부분을 읽고 있는데 이해가 안되서 질문합니다.. [11]
4794김철환1/10/20174355안녕하세요 c# 6.0 책을 구매한 사람인데요 [3]
4793장준영1/7/20176081안녕하세요 c언어 처음 공부해보는 학생입니다 [4]파일 다운로드1
4792김재영1/4/20175487소스코드 공개 전 성태님의 의견을 듣고싶습니다 [3]
4791C#초보12/28/20165771비동기 소켓 close시 ObjectDisposedException 문제점 질문 있습니다.. [1]
4790미나리12/24/20165966파워포인트 쇼 제어 SimpleHttpServer.cs 작동문제 [4]파일 다운로드1
4789김솔지12/21/20166235프린트 시, 프린트하는 파일의 파일명 구하는 부분에 대해서 질문드립니다. [1]
4788짜두12/19/20165605Visual Studio 2015 에서 msbuild 12 사용 [5]
4787손님12/18/20166766VLC라이브러리에 대해 아시나요? [3]파일 다운로드1
4785Hyoungki Kim12/16/20167063WPF 개발 시 MVVM 프레임워크 사용 [2]
4784ds12/15/20164499문의 드립니다. [2]
4783후배12/13/20166228MemoryStream에 관한 질문 입니다. [5]
4782김형민12/6/20164901[ C# 6.0 ] 126p 오타인가요? [6]
4781질문자11/29/20164752ms워드 저장 오류 [1]
... 16  17  18  19  20  21  22  23  [24]  25  26  27  28  29  30  ...