성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
글쓰기
제목
이름
암호
전자우편
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'>WPF - There is no registered CultureInfo with the IetfLanguageTag 'ug'. </h1> <p> 지난 글에서,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > .NET 3.5 이하에서 TextBox에 한글 입력 시 TextChanged 이벤트의 비정상 종료 문제 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/11201'>http://www.sysnet.pe.kr/2/0/11201</a> </pre> <br /> "There is no registered CultureInfo with the IetfLanguageTag 'ug'." 메시지의 System.InvalidOperationException 예외가 발생 후 비정상 종료하는 경우가 있고, 또는 곧바로 비정상 종료하는 경우가 있다고 했는데요. 결과적으로 봤을 때 이 문제는 비정상 종료와 아무런 상관이 없습니다. 단지, 특정 환경에서 한글이 입력된 경우 등록된 Culture 설정이 비정상적일 때 "There is no registered CultureInfo with the IetfLanguageTag 'xx'." 같은 식의 예외가 발생하는 것뿐입니다.<br /> <br /> 비정상 종료하는 것은 막을 수 없었지만, 왠지 System.InvalidOperationException 예외는 없애고 싶었습니다. 왜냐하면, 제 경우에는 <a target='tab' href='http://www.sysnet.pe.kr/2/0/510'>Visual Studio 디버거 상태에서 System.InvalidOperationException 예외에 대해 Thrown 설정</a>을 해두기 때문에 자꾸 이 예외가 걸리는 것이 거슬렸기 때문입니다.<br /> <br /> 이 예외를 막으려면, 해당 Culture(이 글에서는 ug == LCID 0x480) 설정을 잘 동작하도록 맞춰주면 됩니다. 물론, 실제 ug Culture 정보를 기반으로 맞춰주면 더 좋겠지만, 다음의 글에 나오는 코드를 이용해 적당히 등록하는 것도 가능합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > .NET Internationalization: The Developer's Guide to Building Global Windows and Web Applications: Chapter 11 - Custom Cultures ; <a target='tab' href='https://www.codeproject.com/Articles/15175/NET-Internationalization-The-Developer-s-Guide-to'>https://www.codeproject.com/Articles/15175/NET-Internationalization-The-Developer-s-Guide-to</a> </pre> <br /> 따라서, 다음과 같은 코드를 "관리자 권한"으로 실행해 주면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > // sysglobal 어셈블리 참조 using System.Globalization; class Program { static void Main(string[] args) { var culture = new CultureAndRegionInfoBuilder("ug", CultureAndRegionModifiers.None); var ci = new CultureInfo("en-US"); var ri = new RegionInfo("US"); culture.LoadDataFromCultureInfo(ci); culture.LoadDataFromRegionInfo(ri); culture.Register(); } } </pre> <br /> 위의 코드를 실행해 주면, "c:\Windows\Globalization\ug.NLP" 파일이 생성되고, 다음의 레지스트리 설정도 추가됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CustomLocale 이름: ug 타입: REG_SZ 값: ug </pre> <br /> 이후, "<a target='tab' href='http://www.sysnet.pe.kr/2/0/11201'>.NET 3.5 이하에서 TextBox에 한글 입력 시 TextChanged 이벤트의 비정상 종료 문제</a>" 글에 소개된 예제 코드를 실행하면 System.InvalidOperationException 예외는 더 이상 발생하지 않고 곧바로 비정상 종료하게 됩니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 참고로, ug의 Locale ID가 0x480(1152)이기 때문에 다음의 레지스트리에 0x480에 대한 설정을 찾을 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language 값 이름: 00000480 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale 값 이름: 00000480 </pre> <br /> 또한 키보드 레이아웃에도 Uyghur 관련 설정이 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000480 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00010480 </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
9844
(왼쪽의 숫자를 입력해야 합니다.)