/ Ako dekódovanie v utf-8 pozná hranice bajtov? - python, utf-8, dekódovanie

Ako pozná dekódovanie v utf-8 hranice bajtov? - python, utf-8, dekódovanie

Ja som robil veľa čítania na unicodekódovania, najmä pokiaľ ide o Python. Myslím, že na to teraz veľmi dobre rozumiem, ale stále je tu malý detail, o ktorom som trochu neistý.

Ako dekódovanie pozná hranice bajtov? Povedzme napríklad, že mám unicode reťazec s dvoma znakmi unicode s bajtovými reprezentáciami xc6xb4 a xe2x98x82, resp. Potom som tento reťazec unicode napísal do súboru, takže súbor teraz obsahuje bajty xc6xb4xe2x98x82, Teraz sa rozhodnem otvoriť a prečítať súbor (a Python predvolene dekóduje súbor ako utf-8), čo ma vedie k mojej hlavnej otázke.

Ako dekódovanie vie interpretovať bajty xc6xb4 a nie xc6xb4xe2?

odpovede:

3 pre odpoveď č. 1

Bajtové hranice sa dajú ľahko určiť z bitových vzorov. Vo vašom prípade, xc6 začína bity 1100, a xe2 začína s 1110, V utf-8 (a ja som si istý, že to nie je náhoda), môžete určiť počet bajtov v celej postave tým, že hľadáte iba na prvý byte a počítate počet 1 bitov na začiatku pred prvým 0, Takže vaša prvá postava má 2 bajty a druhá má 3 bajty.

Ak začína bajt 0, je to bežný znak ASCII.

Ak začína bajt 10, je súčasťou sekvencie utf-8 (nie je to prvý znak).