Да, во-первых, это «цепочка из трех двухсимвольных шестнадцатеричных значений, равных десятичным 226, 128 и 143.»Это строка байтов.Вы получили байтовую строку, потому что это то, что делает encode
.Вы передали его в формате UTF-8, поэтому байты являются кодировкой UTF-8 для входной символьной строки.
«Второе выглядит как одно шестнадцатеричное значение, которое будет равно десятичному 8,207».Вроде, как бы, что-то вроде;Это нотация для кодовой единицы UTF-16 внутри строки буквенных символов.Один или два кодовых блока UTF-16 кодируют кодовую точку Unicode.В этом случае только один используется для соответствующей кодовой точки.
Конечно, вы можете преобразовать шестнадцатеричное число в десятичное, но это не очень распространено или полезно в любом случае.Кодовая единица - это конкретная битовая комбинация.Байты - это битовая комбинация как целое число, сериализованное в последовательность байтов.
Для диапазона кодовой точки Unicode требуется 21 бит.UTF-16 кодирует кодовую точку в одну или две 16-битные кодовые единицы (так что это два байта в некотором порядке байтов для каждой кодовой единицы).UTF-8 кодирует кодовую точку в одну, две, три или четыре 8-битных кодовых единицы.(8-разрядное целое число составляет один байт, поэтому порядок следования байтов является спорным.) Каждое кодирование символов имеет отдельный алгоритм для распределения 21 бита на столько байтов, сколько необходимо.Оба являются обратимыми и полностью поддерживают набор символов Unicode.Таким образом, вы могли бы напрямую конвертировать одно в другое.
Таблица, на которую вы ссылаетесь, не показывает UTF-16.Он показывает шестнадцатеричное обозначение кодовой точки Unicode: U + 200F.Это обозначение для людей, чтобы идентифицировать кодовые точки.Случается, что когда UTF-16 кодирует кодовую точку в одной кодовой единице, ее номер совпадает с номером кодовой точки.