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

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) 로 게시 하고 테스트를 하고 있어서 디버깅도 안되는 상황입니다...

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







[최초 등록일: ]
[최종 수정일: 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분
좋은 소식이군요. ^^
정성태

... 31  32  33  34  [35]  36  37  38  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
4814김솔지3/13/20177394인쇄 시 , 출력화면을 이미지 파일로 저장하고 싶습니다. [1]파일 다운로드1
4813sp...3/8/20178561멀티 스레드 환경에서 처리하여야 할 목록을 효율적으로 사용하는 기법 질문 드립니다 [2]
4812po...2/23/20178528.NET Window ClassName 변경 질문 드립니다. [1]
4809힘찬...2/15/201710872C# 가상 시리얼 [4]
4808이길용2/9/201710121WCF 외부 접속 관련해서 질문드립니다ㅠ [1]
4807헬조...2/8/201716109WPF의 속도에 대해서 궁금합니다. [3]
4803헬조...2/7/201710385WPF로 메신져 메세지 박스 구현 문의 [2]
4802sp...2/6/20177665특정 범위의 값을 다른 값으로 치환하는 메소드를 만들어야 할 때 가장 빠른 방법은? [7]
4804sp...2/7/20177683    답변글 [답변]: 특정 범위의 값을 다른 값으로 치환하는 메소드를 만들어야 할 때 가장 빠른 방법은?
4805sp...2/7/20177414    답변글 [답변]: 특정 범위의 값을 다른 값으로 치환하는 메소드를 만들어야 할 때 가장 빠른 방법은? (글삭제가 안돼 재첨부합니다)파일 다운로드1
4801sp...2/3/20177345C#의 참조 동작관련하여 아이디어 문의 드립니다 [4]
4800오세운2/1/201710851C# 에서 C++ DLL임포트 질문입니다. [2]
4798손님1/29/20178441picturebox의 image.dispose [1]
4797김철환1/13/20178401책에 관한 질문입니다 [3]
4796Be...1/13/20178218++ 후위연산자와 = 을 함께 사용할 때 생성되는 IL 코드 관련... [2]
4795김철환1/11/20179535이벤트 부분을 읽고 있는데 이해가 안되서 질문합니다.. [11]
4794김철환1/10/20177209안녕하세요 c# 6.0 책을 구매한 사람인데요 [3]
4793장준영1/7/20179024안녕하세요 c언어 처음 공부해보는 학생입니다 [4]파일 다운로드1
4792김재영1/4/20179164소스코드 공개 전 성태님의 의견을 듣고싶습니다 [3]
4791C#...12/28/20169372비동기 소켓 close시 ObjectDisposedException 문제점 질문 있습니다.. [1]
4790미나리12/24/20169549파워포인트 쇼 제어 SimpleHttpServer.cs 작동문제 [4]파일 다운로드1
4789김솔지12/21/20168963프린트 시, 프린트하는 파일의 파일명 구하는 부분에 대해서 질문드립니다. [1]
4788짜두12/19/20168234Visual Studio 2015 에서 msbuild 12 사용 [5]
4787손님12/18/20169647VLC라이브러리에 대해 아시나요? [3]파일 다운로드1
4785Hy...12/16/201610213WPF 개발 시 MVVM 프레임워크 사용 [2]
4784ds12/15/20167324문의 드립니다. [2]
... 31  32  33  34  [35]  36  37  38  39  40  41  42  43  44  45  ...