유니티 엔진으로 모바일 게임을 개발하던 중, 한글 파일을 읽으면 한글이 깨지는 문제를 겪였다.
문제 원인은 모바일 기기의 기본 인코딩 방식이 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() 에러 해결 방법
'IT 관련 > 유니티 엔진' 카테고리의 다른 글
WWW 클래스를 이용한 StreamingAsset 처리 (0) | 2019.09.25 |
---|---|
Better Streaming Asset (5) | 2019.09.25 |
유니티 스트리밍 에셋(Unity Streaming Assets) (0) | 2019.09.24 |