유니티 엔진으로 모바일 게임을 개발하던 중, 한글 파일을 읽으면 한글이 깨지는 문제를 겪였다.

 문제 원인은 모바일 기기의 기본 인코딩 방식이 euc-kr가 아니었고, euc-kr 인코딩을 지원하지도 않는 것이었다.


1. 한글 인코딩으로 변환

 읽어온 데이터를 한글 인코딩으로 변환하면 문제는 해결된다.

 이는 다음 코드를 이용하여 구현할 수 있다.


System.Text.Encoding.GetEncoding("euc-kr"); : euc-kr 인코딩 클래스 변수를 얻어옴


예제 

//결과 텍스트(인코딩 전) byte[] resultBytes = www.bytes; System.Text.Encoding euc = System.Text.Encoding.GetEncoding("euc-kr"); //한글을 읽기 위한 euc-kr 인코딩 //읽은 파일 데이터를 euc-kr 인코딩으로 변환 string convertedString = euc.GetString(resultBytes);


 그런데 System.Text.Encoding.GetEncoding("euc-kr") 부분에서 에러가 발생했다.


 유니티 에디터에서는 아무런 문제도, 경고도 뜨지 않았는데, 안드로이드 기기에서 테스팅 할 때만 이 코드에서 오류가 발생해서 문제를 또 찾아봤는데, 인코딩과 관련된 dll 파일이 없는게 원인이었다.


 문제 해결을 위해서는 인코딩과 관련된 dll인 I18N.dll, I18N.CJK.dll 파일을 복사해서 유니티 프로젝트의 Assets/Plugins 디렉토리에 넣고 새로 빌드하면 된다.


 이 두 dll 파일들은 ...\Unity\Editor\Data\Mono\lib\mono\unity 디렉토리 내에 있으니 복사해서 사용하면 된다.


dll 파일들 위치


 

2. 레퍼런스

https://202psj.tistory.com/1297 - 유니티 모바일에서 한글 인코딩 사용하기


https://forum.unity.com/threads/solved-application-crash-with-notsupportedexception.415325/ - GetEncoding() 에러 해결 방법



블로그 이미지

서기리보이

,