utf8 — UTF-8 텍스트를 담는 블롭
utf8 — UTF-8 텍스트를 담는 블롭 (UTF-8 encoded text as a Blob)
텍스트를 UTF-8로 인코딩한 결과를 다루려면 utf8 타입이면 충분해요. Raku에서 .encode의 기본 결과물이 바로 이 타입으로 돌아오기 때문에, 직접 utf8을 언급하지 않고도 자주 만나게 되는 타입이에요.
본문
utf8은 Blob의 하위 타입이에요. 구체적으로는 uint8 데이터로 UTF-8로 인코딩된 텍스트를 담는 역할을 해요.
class utf8 does Blob[uint8] is repr('VMArray') {}
즉 바이트 단위 데이터를 다루는 Blob 중에서도, 그 바이트들이 UTF-8 텍스트라는 의미를 갖는 타입이에요. 문자열을 인코딩하면 자연스럽게 이 타입이 나오고, 개별 바이트는 배열처럼 접근할 수 있어요.
my utf8 $b = "hello".encode;
say $b[1].fmt("0x%X"); # OUTPUT: «0x65»
"hello"를 .encode하면 utf8 블롭이 나오고, $b[1]은 두 번째 바이트여서 값이 0x65(= e)예요. 이렇게 인코딩된 원본 바이트를 직접 확인해야 할 때 유용하죠.