This is because 'a' accepts only one byte for encoding in UTF-8.
Encoding.UTF8.GetByteCount(c)will tell you how many bytes are required to encode a given character array in UTF-8 . See the documentation for for details Encoding.GetByteCount. This is completely different from how widespread the type is charinside .NET.
Each character with code points less than 128 (i.e., U + 0000 to U + 007F) accepts one byte for encoding in UTF-8.
2, 3 4 UTF-8. ( U + 1FFFF, 5 6 , Unicode , , .)
, , 4 UTF-8, char. A char UTF-16, Unicode U + FFFF UTF-16, .