UCS-2 i UTF-16
UCS-2 vs UTF-16
UCS-2 i UTF-16 są schematami kodowania dwóch znaków, które wykorzystują 2 bajty, składające się z 16 bitów, do reprezentowania każdego znaku; w ten sposób sufiksy 2 i 16. Główną różnicą między UCS-2 i UTF-16 jest to, który z nich jest obecnie używany. UCS-2 jest starszym schematem, który został uznany za przestarzały i zastąpiony znacznie nowszym i wydajniejszym UTF-16.
UCS-2 jest kodowaniem o stałej szerokości, które używa dwóch bajtów dla każdego znaku; co oznacza, że może reprezentować łącznie 216 znaków lub nieco ponad 65 tysięcy. Z drugiej strony, UTF-16 jest schematem kodowania o zmiennej szerokości, który wykorzystuje co najmniej 2 bajty i maksymalnie 4 bajty dla każdego znaku. Dzięki temu kodowanie UTF-16 może reprezentować dowolny znak w kodzie Unicode, przy użyciu minimalnej ilości miejsca dla najczęściej używanych znaków. Dla większości z ponad 65 000 znaków UCS-2 i UTF-16 mają identyczne punkty kodowe; więc są w dużej mierze równoważne. Dzięki temu aplikacje obsługujące UTF-16 mogą poprawnie interpretować kody UCS-2. Ale na odwrót nie działa z powodu wielu ulepszeń w UTF-16.
Jednym z wymienionych ulepszeń jest możliwość reprezentowania skryptów, które przechodzą od prawej do lewej, a nie od lewej do prawej. W UTF-16 skrypty mogą identyfikować kierunkowość, dzięki czemu aplikacja poprawnie renderuje słowa przechowywane w kodzie. UCS-2 nie posiada tej zdolności, więc nie będzie działać ze skryptami takimi jak arabski i hebrajski, które poruszają się od prawej do lewej. Kolejną cechą UTF-16 jest normalizacja. Normalizacja traktuje słowa, które oznaczają to samo, ale są przedstawiane w różny sposób jako identyczne. Na przykład słowa "nie mogą" i "nie mogą" są identyczne, ponieważ te ostatnie są tylko skróceniem tego pierwszego. Jest to bardzo ważne, szczególnie gdy szukasz takich słów, ponieważ pozwoliłoby to na uzyskanie pełniejszego wyniku wyszukiwania. W UCS-2 nie dzieje się to automatycznie, więc aplikacja musi samodzielnie wdrożyć taką funkcję.
Naprawdę nie ma powodu, aby wybierać UCS-2 ponad UTF-16, poza tym, że aplikacja nie wymaga obsługi UTF-16. Pod każdym względem UTF-16 jest lepszy od UCS-2. Jest również w dużej mierze kompatybilny wstecz, dzięki czemu nie musisz się martwić o pliki zakodowane w UCS-2.
Streszczenie:
- UCS-2 jest przestarzały i został zastąpiony przez UTF-16
- UCS-2 jest schematem kodowania o stałej szerokości, natomiast UTF-16 jest schematem kodowania o zmiennej szerokości
- Aplikacje obsługujące UTF-16 mogą odczytywać pliki UCS-2, ale nie na odwrót
- UTF-16 obsługuje prawo do zezwalania na skrypty, podczas gdy UCS-2 nie
- UTF-16 obsługuje normalizację, podczas gdy UCS-2 nie