Given a UTF-8 string, give a string that represents byte counts of each characters.
Rules:
As long as the input string is encoded in UTF-8 (without BOM), its type doesn't matter. In C++, it can be
char[]
orstd::string
. In Haskell, it can be[Int8]
or[CChar]
.The output must be (in usual case) a string of ASCII digit characters. Its encoding doesn't matter.
When given an invalid UTF-8 sequence (including representation of surrogates), every bytes of the sequence are to be represented as the replacement character �.
Reserved characters and noncharacters are still considered as valid UTF-8 sequences, and thus must have corresponding output digit.
As this is a code-golf, the shortest code in bytes wins.
Example:
When given the following byte sequence:
00 80 C0 80 EB 80 80
The output must be:
1���3
b'Hej d\xc3\xc5!'
(i.e.48 65 6A 20 64 C3 C5 21
) (invalid continuation byte (C5) after a valid start byte (C3)) (expected output:11111��1
) \$\endgroup\$