Unicode - это просто кодировка и не имеет 16-битных символов, потому что это не набор сопоставлений символов, которые нигде не хранятся.Для представления Unicode существуют UTF-8, UTF-16 и UTF-32 и многие другие кодировки с различными размерами кодовых единиц.Unicode не может быть представлен только 16 битами, потому что это 21-битная кодировка.
Не зная содержимого вашего исходного файла, если он содержит чистый ASCII (т.е. только кодовые точки ниже 128), то это из-за знак порядка байтов (BOM) U + FEFF .Когда вы выбрали «Unicode» при сохранении файла в «Блокноте», это на самом деле UTF-16LE, и он будет вставлять 2-байтовую спецификацию (0xFF 0xFE) в начале, чтобы указать кодировку файла, увеличивая его размер до 66. Имена вБлокнот просто сбивает с толку.Фактически то же самое происходит, если вы вводите любой текст ниже U + FFFF и сохраняете как UTF-16.Если вы сохраните файл в чистом ASCII как UTF-8, тогда длина будет теперь 35 байтов из-за 3-байтовой спецификации
Обязательное чтение: Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знатьО Юникоде и наборах символов (без оправданий!)