Я только что узнал о кодировании строк в python и, немного повозившись с этим, меня смутил тот факт, что размер пустой строки ('') равен 0 в utf 8 и ascii, но почему-то 2 в utf 16? почему?
print(len(''.encode('utf16'))) # is 2
print(len(''.encode('utf8'))) # is 0
Я предполагаю, что большая часть проблемы заключается в том, что я не понимаю, как работает utf 16. Я не понимаю, почему кодирование «спама» в utf 16 будет иметь длину 10 байтов вместо 8 байтов (2 байта (16 бит) для каждого символа). Я предполагаю, что 2 байта необходимы в utf 16 по умолчанию для любой строки для заполнения или чего-то еще?
*редактировать
Я НЕ запутался в основах работы UTF 8 или UTF 16 и отличается хранением каждого отдельного символа. Меня смущает, как отсутствие каких-либо символов (пустая строка) будет храниться в 2 байтах в UTF 16, но иметь 0 байтов в UTF 8 (в отличие от 1 байта или 0 для обоих)
По ссылке нет ответа на мой вопрос.