ASP.NET Core

[ITSkeleton] .NET Core EUC-KR Encoding 하기 (한글깨짐 해결)

ITSkeleton 2017. 11. 3. 13:58
728x90
반응형

.NET Core를 사용하시는 많은분들...


고생이 많으십니다... 저도 개고생중인데요...


그 흔하디 흔한 인코딩이 안되더군요...


저도 인터넷을 자주 참고하는지라 구글신님께 물어보면서 작업을 합니다.


문자메세지를 보내는데 한글이 깨져서 나오더군요. 그래서 인코딩 작업을 했습니다.


그런데..! 모든 방법을 써보았지만... 해결이 되지 않았어요..


멘탈 붕괴를 맞이한 순간, 


Encoding 메소드에 RegisterProvider 이라는 아이가 있더군요


이게 뭐지?


하고 찾아본결과..! 인코딩을 할수있게 만들어 주는 아이였습니다.


빌드하면 자꾸 


NotSupportedException: No data is available for encoding 51949. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.


이런 에러가 나타나더군요.. 줄여서 인코딩 코드가 없다는 겁니다.


아니 도대체 왜없지? 하고 찾은 것이 


RegisterProvider


이것입니다. 인코딩 코드를 불러오는 메소드입니다.


사용방법은 다음과 같습니다.


xxx.cs 파일에

컨트롤러에 넣어주는것이 Ajax부를때 용이합니다.


Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);


해당 코드를 붙여넣어줍니다.


그리고 인코딩 코드는 


var endcoingCode = 51949;


제목과 같이 EUC-KR 이기때문에 51949 =  EUC-KR


해당 번호는 코드 페이지라고 불립니다.


https://msdn.microsoft.com/ko-kr/library/system.text.encoding.aspx


이곳에 코드페이지 번호들이 있습니다~


System.Text.Encoding euckr = System.Text.Encoding.GetEncoding(endcoingCode);


그후 위와같은 코드를 작성해줍시다~ 패키지가 깔려있지않거나 using이 되어있지않다면 include 시켜줍시다..!


자 이제 다음은 문자를 집어넣어주어야겠죠


string postmsg = "안녕하세요 테스트중입니다.";


byte[] byteArray = euckr.GetBytes(postmsg);


이렇게 적어주시면 encoding이 되시는것을 확인 하실 수 있을겁니다.

728x90
반응형