Daily Develop
[코틀린] 한글 깨질 때 인코딩처리
에디개발자
2021. 7. 2. 07:00
반응형
외부 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")
)
)
}
반응형