in reply to Re^16: Seeking Perl docs about how UTF8 flag propagates (Terminology)
in thread Seeking Perl docs about how UTF8 flag propagates

> Each character takes up 1 to 13 bytes of storage, actually.

I'm puzzled, could you please give an example of a string where a character takes more than 4 bytes of storage?

edit

> I think you're trying to convince me that "character" is confusing,

no, I'm not,

as I said I think byte := character is confusing, it's rather character := byte in the classic case.

(Upgrade: deleted part about using vec and unpack with wide characters, until further testing)

Cheers Rolf
(addicted to the 𐍀𐌴𐍂𐌻 Programming Language :)
Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^18: Seeking Perl docs about how UTF8 flag propagates (Terminology)
by ikegami (Patriarch) on May 22, 2023 at 16:39 UTC

    Anything larger than 0x1F_FFFF will take more than four bytes.

    Anything larger than 0xF_FFFF_FFFF will take 13.

    $ perl -MDevel::Peek -e'Dump(chr(0x7FFFFFFFFFFFFFFF))' SV = PV(0x5555770a3f00) at 0x5555770d2d50 REFCNT = 1 FLAGS = (PADTMP,POK,READONLY,PROTECT,pPOK,UTF8) PV = 0x5555770db6f0 "\xFF\x80\x87\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xB +F\xBF"\0 [UTF8 "\x{7fffffffffffffff}"] CUR = 13 LEN = 15

    as I said I think byte := character is confusing, it's rather character := byte in the classic case.

    Still no idea what you mean. Are you talking about something I said? In which case, you could point out which thing I said you find confusing?

    oh, and the classic case is char ≡ byte ≡ smallest addressable unit. It has been all kinds of sizes, including 6, 8, 9, 16 and even 32 bits. (I personally worked on a system with a 16 bit byte extensively.) But we now have strings with elements that have a size larger than the smallest addressable unit. So the classic case is irrelevant.

        You said "And I cringe about calling a byte a character.". What does that even mean? Did someone say a byte is a character? Are you talking about something I said? In which case, what?

        Your explanations, including the one to which you just linked, do not provide clarity.