Simple&Natural
안드로이드에서 웹문서 출력시 글자가 깨지는 경우 본문
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
'안드로이드(Android) > 이슈 및 해결' 카테고리의 다른 글
Coroutine IO Dispatcher의 Thread number가 최대 Thread 갯수를 초과하는 이슈 (0) | 2020.09.27 |
---|---|
META-INF 관련 문제가 발생하는 경우 (0) | 2020.09.15 |
에뮬레이터에서 네트워크 작업 중 발생하는 Connection 오류 관련 (0) | 2020.04.05 |
안드로이드 Legacy Code 로 인해 빌드가 되지 않는 경우 (0) | 2020.03.05 |
안드로이드 프로젝트 빌드 시 Unfortunately you can't have non-Gradle Java modules and > Android-Gradle modules in one project 오류가 발생하는 경우 (0) | 2020.02.22 |