I hesitated before writing about the byte level, but S02
explictly mentions it:
also ask for the total string length of an array's elements, in bytes,
codepoints or graphemes, using these methods .bytes, .codes or .graphs
respectively on the array. The same methods apply to strings as well.
And of course you have a byte level if you specify an encoding, or if there is a default one. Just like you can have a language dependent notion of a grapheme if you pick a language.
But I think the spec should be a bit clearer regarding how the character encoding is chosen.