한글 조합과 utf8
한글을 조합하는데 utf8을 사용하면 망하나요.
망하는 거 까지는 아니어도 한글은 3바이트를 사용하여서 앵간하는 거여요.
fun read(char: String):Int{
val arr = char.toByteArray()
val a0 = arr[0].toUByte().toInt() shl 16
val a1 = arr[1].toUByte().toInt() shl 8
val a2 = arr[2].toUByte().toInt()
return a0 + a1 + a2
}
fun write(value: Int):String{
val a0 = (value shr 16).toByte()
val a1 = (value shr 8).toByte()
val a2 = value.toByte()
return String(byteArrayOf(a0, a1, a2), Charsets.UTF_8)
}
utf16을 사용하여도 한글이 잘 표현되어요. 이거는 2바이트 워드이어서 코틀린에서 ‘가’.code 이케 바로 변환되겠쩌.
‘가’ 에 대하여 utf8, utf16을 보면 234, 176, 128 이거랑 172, 0 이케 되어요.
