Simple&Natural

안드로이드에서 웹문서 출력시 글자가 깨지는 경우 본문

안드로이드(Android)/이슈 및 해결

안드로이드에서 웹문서 출력시 글자가 깨지는 경우

Essense 2020. 4. 8. 13:51
728x90

EUC-KR로 인코딩된 웹문서를 안드로이드 앱으로 불러오면 종종 글자가 깨져보이는 경우가 발생하는데

 

이때 받아오는 inputStream에 charset 인코딩 타입을 지정해주어야 한다.

val response = httpRequest(mClient, newsUrl)
val inputStream = response?.body?.byteStream() //임시코드, null 예외처리를 이렇게 겹쳐 쓰는 건 지양해야 함
val inputStringReader = InputStreamReader(inputStream, "euc-kr")

 

블로그를 돌아다니다 보면 다 웹문서를 올바르게 표시하고 싶어하는 질문들에 대해 이상한 답변이 달려있는 경우가 많은데... 예를 들면 String(word.toByteArray("euc-kr"), "utf-8") 이러한 코드는 이미 저장이 되어있는 문자열을 설정하는 옵션이므로 전혀 의미가 없다.

 

애초에 스트림 부분에 타입을 지정해주어야 올바른 문자열로 출력이 가능하다.

 

 

 

+ 사실 그냥 Jsoup쓰면 알아서 잘 파싱해서 주긴 한다.

직접 구현하려고 했는데 굳이 그럴 필요는 없었고 원리가 궁금하므로 소스코드를 뜯어봐야겠다

728x90