count
в String
и String.UTF8View
, String.UTF16View
и т. Д. Различны, поскольку их способ хранения различен, хотя все они являются коллекциями.String
сохраняет их в коллекции символов, поэтому каждый элемент в коллекции представляет один символ.Однако в других кодировках они хранятся в коллекции единиц кода этой кодировки.Некоторые специальные символы (например, ñ) должны храниться в двух единицах.Например, в UTF8 это 0xC3 0xB1
, а в UTF16 - 0x00F1
, поэтому вы можете видеть, что в кодировке UTF8 есть еще один элемент, чем UTF16.Вы не можете точно определить количество символов с помощью count
, если не используете основание String
.