BudulianinТебе нужно понять, что такое юникод.
Теже самые символы в той же самой последовательности?
BudulianinНе, юникод - это набор чисел, часть из которых отображается на символы, часть отображается на кусочки символов, а часть вообще отображается на пустоту.
Unicode это стандарт, в соответствии с которым, каждому символу определён код типа \u0444.
Ты не можешь считать это набором символов, потому что очень многие числа не соотвествуют ничему. Числа называются “кодовые точки”. Этих чисел около одного миллиона.
>>> 65536 * 17 1114112 >>>
Они разделены на блоки по 65536 чисел. Первый блок называется BMP (Basic Multilingual Plane). В этом блоке помещается практически всё европейское. Также в этом блоке есть и служебные кодовые точки, которые называются суррогатами. Из пар этих точек можно составлять точки в оставшейся части юникода.
Вот utf-16 - двубайтовая кодировка, её хватает на кодирование только этой BMP. Но, так как в BMP есть суррогаты, то в этой кодировке можно представить и любую кодовую точку из оставшихся 16 плоскостей.
Что такое кодировки utf-8, utf-16 и utf-32? Это кодировки для всего юникода. То есть каждая из этих кодировок может представить любую кодовую точку юникода. Каждая из этих кодировок делает это по-своему: utf-32 является прямой кодировкой, utf-16 - экономной кодировкой, utf-8 - оптимальной кодировкой.
Budulianinlatin1 была до юникода, ascii была до latin1. Поэтому ascii входит в latin1, а latin1 входит в юникод.
Теже самые символы в той же самой последовательности?
Budulianin
Дак если latin1 перевели в Unicode, он должен быть записан символами Unicode
>>> u'\xd1' is u'\u00d1' True >>>