Kiedy próbuję zapisać plik tekstowy z tekstem w języku innym niż angielski w Notatniku, dostaję opcję wyboru między Unicode , Unicode Big Endian i UTF-8 . Jaka jest różnica między tymi formatami?
Zakładając, że nie chcę żadnej kompatybilności wstecznej (ze starszymi wersjami systemu operacyjnego lub aplikacjami) i nie dbam o rozmiar pliku, który z tych formatów jest lepszy?
(Załóżmy, że tekst może być w językach takich jak chiński lub japoński, oprócz innych języków).
Uwaga: Z poniższych odpowiedzi i komentarzy wynika, że w języku lingwistycznym Notatnika Unicode to UTF-16 (Little Endian), Unicode Big Endian to UTF-16 (Big Endian), a UTF-8 jest dobrze UTF-8.
Odpowiedzi:
Dunno. Co jest lepsze: piła czy młot? :-)
Unicode nie jest UTF
W tym artykule jest jednak trochę bardziej odpowiedni temat, o którym mowa:
UTF-32 koncentruje się na wyczerpaniu i reprezentacji stałej długości, używając 4 bajtów dla wszystkich znaków. Jest to najprostsze tłumaczenie, bezpośrednio mapujące punkt kodowy Unicode na 4 bajty. Oczywiście nie jest to bardzo wydajny rozmiar.
UTF-16 to kompromis, który wykorzystuje 2 bajty przez większość czasu, ale rozszerza się do 2 * 2 bajtów na znak, aby reprezentować pewne znaki, te nieuwzględnione w Basic Multilingual Plane (BMP).
Zobacz także Absolutne minimum Każdy programista absolutnie, pozytywnie musi wiedzieć o Unicode i zestawach znaków (bez wymówek!)
źródło
W przypadku języków europejskich UTF-8 jest mniejszy. W przypadku języków orientalnych różnica nie jest tak wyraźna.
Oba poradzą sobie ze wszystkimi możliwymi znakami Unicode, więc nie powinno to mieć różnicy w kompatybilności.
źródło
Istnieje więcej kodowań znaków Unicode, niż może się wydawać.
UTF 8
Kodowanie UTF-8 ma zmienną szerokość, od 1 do 4 bajtów, przy czym górne bity każdego bajtu są zarezerwowane jako bity kontrolne. Wiodące bity pierwszego bajtu wskazują całkowitą liczbę bajtów używanych dla tego znaku. Wartość skalarna punktu kodowego znaku jest konkatenacją bitów niekontrolowanych. W tej tabeli
x
reprezentuje najniższe 8 bitów wartości Unicode,y
reprezentuje kolejne 8 wyższych bitów iz
reprezentuje bity wyższe niż to.źródło
„Unicode” jest innym terminem określającym „UTF-16”, który jest kodowaniem zestawu znaków Unicode na szesnaście bitów na znak. UTF-8 koduje go na osiem bitów na znak.
W obu przypadkach każde przepełnienie jest przypisywane do kolejnych 16 lub ośmiu bitów.
źródło
Jedyną prawdziwą zaletą małych plików, takich jak pliki tekstowe, jest wynikowy rozmiar pliku. UTF-8 generuje zwykle mniejsze pliki. Ale różnica ta może być mniej wyraźna w przypadku tekstu chińskiego / japońskiego.
źródło
Jednym słowem, Unicode to zestaw znaków , podczas gdy Unicode Big Endian i utf-8 to dwa kodowania , które są używane do przechowywania znaków na komputerze jako 01.
źródło