2014-04-24 8 views
7

Mam utworzony plik z kodowaniem UTF-8, ale nie rozumiem reguł dotyczących rozmiaru, który zajmuje na dysku. Tu jest mój kompletne badania:Rozmiar pliku w kodowaniu UTF-8?

  1. Najpierw stworzyłem plik z pojedynczym Hindi litery „क” i rozmiaru pliku w systemie Windows 7 został
    8 bajtów.

  2. Teraz z dwiema literami "कक", a rozmiar pliku to 11 bajtów.

  3. Teraz z trzema literami "ककक", a rozmiar pliku to 14 bajtów.

Czy ktoś może mi wyjaśnić, dlaczego pokazuje takie rozmiary?

Odpowiedz

7

Pierwsze trzy bajty są używane dla BOM (Byte Order Mark)EF BB BF.

Następnie bajty E0 A4 95 kodują literę क.

Następnie bajty 0D 0A kodują powrót karetki.

Łącznie: 8 bajtów. Dla każdej litery, którą dodajesz, potrzebujesz jeszcze trzech bajtów.

+0

BOM jest całkowicie zbędny w plikach UTF-8 (kolejność bajtów jest całkowicie i jednoznacznie określona, ​​w przeciwieństwie do UTF-16LE vs UTF-16BE), ale wydaje się, że niektóre narzędzia Windows nalegają na ich umieszczenie. Może przełączyć się na inne narzędzie lub lepszą platformę. – tripleee

+1

@tripleee: Konsorcjum Unicode oświadcza, że ​​"użycie zestawu BOM nie jest ani wymagane, ani zalecane dla UTF-8" ([s. 36] (http://www.unicode.org/versions/Unicode5.0.0/ch02.pdf)), ale może być przydatna, na przykład dla edytorów, którzy muszą obsługiwać różne kodowania. Ponieważ UTF-8 jest kompatybilny wstecz z ASCII, może się zdarzyć, że plik UTF-8 nie zawiera żadnych znaków powyżej "0x7f", więc edytorzy skanują pierwsze 64 KB pliku, aby odgadnąć jego kodowanie (na przykład co robi EditPad), może zostać oszukany. –

+1

Nie powiedziałbym CAŁKOWICIE nadmiarowe ... jednoznacznie wskazuje, że plik jest zakodowany w UTF-8. – Flynn1179