성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] VT sequences to "CONOUT$" vs. STD_O...
[정성태] NetCoreDbg is a managed code debugg...
[정성태] Evaluating tail call elimination in...
[정성태] What’s new in System.Text.Json in ....
[정성태] What's new in .NET 9: Cryptography ...
[정성태] 아... 제시해 주신 "https://akrzemi1.wordp...
[정성태] 다시 질문을 정리할 필요가 있을 것 같습니다. 제가 본문에...
[이승준] 완전히 잘못 짚었습니다. 댓글 지우고 싶네요. 검색을 해보...
[정성태] 우선 답글 감사합니다. ^^ 그런데, 사실 저 예제는 (g...
[이승준] 수정이 안되어서... byteArray는 BYTE* 타입입니다...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>Firebird - 유니코드 기본 문자셋 지정</h1><br /> <p> <br /> 지난번에 살펴보았던 기본 설치 유형으로는,<br /> <br /> <pre style='margin: 10px 10px 10px 10px; padding: 10px 10px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > .NET 프로그래머에게도 유용한 Firebird 무료 데이터베이스 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/1038'>http://www.sysnet.pe.kr/2/0/1038</a> </pre> <br /> 영문 윈도우에서 제어판의 "Region and Language"를 "English (United States)"로 변경한 환경이 되면,<br /> <br /> <pre style='margin: 10px 10px 10px 10px; padding: 10px 10px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 개발자 PC 환경 - 유니코드(Unicode)를 위한 설정 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/762'>http://www.sysnet.pe.kr/2/0/762</a> </pre> <br /> Firebird 데이터베이스의 테이블에 정의된 필드에 한글을 저장해 두고, 다시 꺼내오면 문자가 깨져나오게 됩니다.<br /> <br /> 해결을 해야겠지요. ^^<br /> <br /> 검색해 본 바로는 2가지 정도의 해결책이 있습니다. 우선, 특정 칼럼만 해결하는 경우라면 다음과 같이 Linq To SQL에서 문자셋을 명시해 줄 수 있습니다.<br /> <br /> <pre style='margin: 10px 10px 10px 10px; padding: 10px 10px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > [Table(Name = "Requests")] public class Request { [Column(DbType = "VARCHAR(150) <mark>CHARACTER SET UTF8</mark>")] public string Name; } </pre> <br /> 위와 같이 "CHARACTER SET"을 지정해주는 것은 CHAR/VARCHAR에는 잘 적용이 되지만, 아쉽게도 BLOB 유형의 필드에서는 다음과 같이 정의를 해보았지만,<br /> <br /> <pre style='margin: 10px 10px 10px 10px; padding: 10px 10px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > [Column(DbType = "BLOB SUB_TYPE TEXT <mark>CHARACTER SET UTF8</mark>")] public string Name; </pre> <br /> Unicode 문자열이 깨져나오는 것은 여전했습니다. <br /> <br /> 따라서, 이런 경우에는 fdb 데이터베이스 파일에 정의된 모든 필드들의 기본 문자셋으로 유니코드를 지정해 주어야 하는데요. 이럴려면 "Create Database" 구문에서 다음과 같이 기본 문자셋을 지정해 주면 됩니다.<br /> <br /> <pre style='margin: 10px 10px 10px 10px; padding: 10px 10px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > CREATE DATABASE ‘EMPLOYEE.FDB’ <mark>DEFAULT CHARACTER SET</mark> ISO8859_1; </pre> <br /> 그런데, Linq To SQL의 DataContext.CreateDatabase를 사용해서 DB를 생성하는 경우에는 위와 같이 직접 "CREATE DATABASE" 구문을 사용해 줄 수가 없습니다. 검색을 좀 더 해본 결과, 다행히 '연결 문자열'에서 기본 문자셋을 제공해 줄 수 있는데, <br /> <br /> <pre style='margin: 10px 10px 10px 10px; padding: 10px 10px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > "<mark>character set=UTF8</mark>;DataSource=localhost;Port={0};ServerType=0;Database={1};User=SYSDBA;Password=masterkey;"); </pre> <br /> 이렇게 설정된 값은 DB 생성 시에도 그대로 반영이 됩니다. 따라서, 여러분들이 사용하는 FDB 데이터베이스에 대해 기본적으로 위와 같이 유니코드를 감안한 문자셋을 지정해 주는 것을 기본으로 사용하면 되겠습니다.<br /> <br /> 참고로, 아래는 웹에서 검색해 본 자료들입니다.<br /> <br /> <pre style='margin: 10px 10px 10px 10px; padding: 10px 10px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > How to define the character set of a column? ; <a target='tab' href='http://www.devexpress.com/Support/Center/p/Q202365.aspx'>http://www.devexpress.com/Support/Center/p/Q202365.aspx</a> utf 8 in firebird 2.5 ; <a target='tab' href='http://www.devexpress.com/Support/Center/p/Q201335.aspx'>http://www.devexpress.com/Support/Center/p/Q201335.aspx</a> Convert your Firebird applications to Unicode ; <a target='tab' href='http://www.ibexpert.info/ibe/index.php?n=Doc.ConvertYourFirebirdApplicationsToUnicode'>http://www.ibexpert.info/ibe/index.php?n=Doc.ConvertYourFirebirdApplicationsToUnicode</a> Character sets and Unicode in Firebird ; <a target='tab' href='http://www.ibexpert.info/ibe/index.php?n=Doc.CharacterSetsAndUnicodeInFirebird'>http://www.ibexpert.info/ibe/index.php?n=Doc.CharacterSetsAndUnicodeInFirebird</a> </pre> <br /> </p> <br /> <br /><br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1341
(왼쪽의 숫자를 입력해야 합니다.)