Ответ 1
Если вы хотите количество байтов в строке, эта функция должна сделать это для вас довольно солидно.
def utf8len(s):
return len(s.encode('utf-8'))
Причина, по которой вы получили странные числа, состоит в том, что инкапсулированные в строку - это куча другой информации из-за того, что строки являются реальными объектами в python.
Это интересно, потому что если вы посмотрите на мое решение для кодирования строки в "utf-8", там есть метод "encode" для объекта "s" (который является строкой). Ну, его нужно где-то хранить? Следовательно, счетчик больше, чем обычный байт. В том числе этот метод, а также несколько других :).