반응형
외부 API를 사용할 때 흔히 겪는 문제 중 하나로 한글깨지는 문제가 있습니다. 현재는 대부분 utf-8로 사용하지만 생성된지 오래된 경우에는 다양한 인코딩이 적용되어 한글이 깨져서 골머리 썩은 경험이 많을 것입니다.
getMsg() 메소드를 이용하여 한글이 안깨지는 인코딩 방식을 사용합니다.
private fun getMsg(msg: String) {
println("utf-8 -> euc-kr : " + String(msg.toByteArray(Charset.forName("utf-8")), Charset.forName("euc-kr")))
println("utf-8 -> ksc5601 : " + String(msg.toByteArray(Charset.forName("utf-8")), Charset.forName("ksc5601")))
println(
"utf-8 -> x-windows-949 : " + String(
msg.toByteArray(Charset.forName("utf-8")),
Charset.forName("x-windows-949")
)
)
println(
"utf-8 -> iso-8859-1 : " + String(
msg.toByteArray(Charset.forName("utf-8")),
Charset.forName("iso-8859-1")
)
)
println(
"iso-8859-1 -> euc-kr : " + String(
msg.toByteArray(Charset.forName("iso-8859-1")),
Charset.forName("euc-kr")
)
)
println(
"iso-8859-1 -> ksc5601 : " + String(
msg.toByteArray(Charset.forName("iso-8859-1")),
Charset.forName("ksc5601")
)
)
println(
"iso-8859-1 -> x-windows-949 : " + String(
msg.toByteArray(Charset.forName("iso-8859-1")),
Charset.forName("x-windows-949")
)
)
println(
"iso-8859-1 -> utf-8 : " + String(
msg.toByteArray(Charset.forName("iso-8859-1")),
Charset.forName("utf-8")
)
)
println("euc-kr -> utf-8 : " + String(msg.toByteArray(Charset.forName("euc-kr")), Charset.forName("utf-8")))
println(
"euc-kr -> ksc5601 : " + String(
msg.toByteArray(Charset.forName("euc-kr")),
Charset.forName("ksc5601")
)
)
println(
"euc-kr -> x-windows-949 : " + String(
msg.toByteArray(Charset.forName("euc-kr")),
Charset.forName("x-windows-949")
)
)
println(
"euc-kr -> iso-8859-1 : " + String(
msg.toByteArray(Charset.forName("euc-kr")),
Charset.forName("iso-8859-1")
)
)
println(
"ksc5601 -> euc-kr : " + String(
msg.toByteArray(Charset.forName("ksc5601")),
Charset.forName("euc-kr")
)
)
println(
"ksc5601 -> utf-8 : " + String(
msg.toByteArray(Charset.forName("ksc5601")),
Charset.forName("utf-8")
)
)
println(
"ksc5601 -> x-windows-949 : " + String(
msg.toByteArray(Charset.forName("ksc5601")),
Charset.forName("x-windows-949")
)
)
println(
"ksc5601 -> iso-8859-1 : " + String(
msg.toByteArray(Charset.forName("ksc5601")),
Charset.forName("iso-8859-1")
)
)
println(
"x-windows-949 -> euc-kr : " + String(
msg.toByteArray(Charset.forName("x-windows-949")),
Charset.forName("euc-kr")
)
)
println(
"x-windows-949 -> utf-8 : " + String(
msg.toByteArray(Charset.forName("x-windows-949")),
Charset.forName("utf-8")
)
)
println(
"x-windows-949 -> ksc5601 : " + String(
msg.toByteArray(Charset.forName("x-windows-949")),
Charset.forName("ksc5601")
)
)
println(
"x-windows-949 -> iso-8859-1 : " + String(
msg.toByteArray(Charset.forName("x-windows-949")),
Charset.forName("iso-8859-1")
)
)
}
반응형
'Daily Develop' 카테고리의 다른 글
ThreadPoolTaskExecutor Queue가 full의 처리 정책 (0) | 2021.12.21 |
---|---|
[JPA] deleteAll() vs deleteAllInBatch() (0) | 2021.07.28 |
[HttpStatus] API 처리 별 HttpStatus 리턴 코드 정리 (0) | 2021.07.13 |
[Post] application/x-www-form-urlencoded 데이터 받는 방법, inputStream 주의 (3) | 2021.06.18 |
[javascript] '==', '===' 차이 ( 나의 삽질.. ) (0) | 2020.11.25 |