Rozmiar null terminatora w różnych UTF

0

Witajcie,

Czy rozmiar null terminatora w zależności od UTF się różni? Znaczy w ASCII wiadomo jest to bajt = 0, ale czy w UTF16 i 32 są to odpowiednio 2 i 4 czy też 1? Piszę dekodowanie, więc muszę zrobić StrLen dla UTF. Albo gdzie to sprawdzić?

1

ASCII / UTF8 = 1;
UTF16 = 2,
UTF32 = 4

A jeśli opierasz się na wchar_t to radzę sprawdzać sizeof, ponieważ na różnych systemach może być różny.

1

Znak o kodzie U+0000 zakodowany w UTF-16 będzie się składał z dwóch bajtów o wartości 0, a w UTF-32 z czterech.

Albo gdzie to sprawdzić?

http://unicode.org

1

UTF-8 (nie wiem jak reszta, ale pewnie podobnie) posiada znak null, ale formalnie nie wyznacza on końca ciągu znaków - długość należy trzymać osobno, np. jako struktura:

struct Utf8String {
  size_t length;
  char* data;
}

Choć niektóre implementacje faktycznie (błędnie) wykorzystują go jako terminator.

1 użytkowników online, w tym zalogowanych: 0, gości: 1