Różnice w formacie Unicode, UTF, ASCII, ANSI

Jaka jest różnica między Unicode, UTF8, UTF7, UTF16, UTF32, ASCII, i ANSI kodowanie?

W jaki sposób są one pomocne dla programistów?

Author: Hakam Fostok, 2009-03-31

2 answers

Idąc w dół listy:

  • "Unicode " nie jest kodowaniem, chociaż niestety, wiele dokumentacji nieprecyzyjnie używa go do odwoływania się do dowolnego kodowania Unicode, którego dany system używa domyślnie. W systemach Windows i Java często oznacza to UTF-16; w wielu innych miejscach oznacza to UTF-8. Właściwie, Unicode odnosi się do samego abstrakcyjnego zestawu znaków, a nie do żadnego konkretnego kodowania.
  • UTF-16 : 2 bajty na "jednostkę kodu". Jest to natywny format ciągi w. NET i ogólnie w Windows i Javie. Wartości spoza podstawowej płaszczyzny wielojęzycznej (BMP) są kodowane jako pary zastępcze. (Są one stosunkowo rzadko używane - co jest dobrą pracą, ponieważ bardzo niewielu programistów je dobrze, podejrzewam. Bardzo wątpię.)
  • UTF-8 : kodowanie o zmiennej długości, 1-4 bajty na punkt kodu. Wartości ASCII są kodowane jako ASCII przy użyciu 1 bajtu.
  • UTF-7 : zwykle używany do kodowania poczty. Są szanse, jeśli myślisz potrzebujesz go, a nie piszesz, mylisz się. (To tylko moje doświadczenie z ludźmi zamieszczającymi posty w grupach dyskusyjnych itp. - Poza pocztą, to naprawdę nie jest powszechnie stosowane w ogóle.)
  • UTF-32 : kodowanie o stałej szerokości przy użyciu 4 bajtów na punkt kodu. Nie jest to zbyt wydajne, ale ułatwia życie poza BMP. Mam klasę. net Utf32String jako część mojej biblioteki MiscUtil , Jeśli kiedykolwiek będziesz tego chciał. (Nie został dokładnie przetestowany, pamiętaj.)
  • ASCII : Single kodowanie bajtów tylko przy użyciu dolnych 7 bitów. (Kod Unicode punkty 0-127.) Bez akcentów itp.
  • ANSI: nikt nie naprawił kodowania ANSI - jest ich dużo. Zwykle, gdy ludzie mówią "ANSI", mają na myśli "domyślne ustawienia regionalne / kodowe dla mojego systemu", które uzyskuje się za pomocą kodowania .Domyślnie , i często jest Windows-1252 , ale mogą być inne lokalizacje.

Jest więcej na Moja strona Unicode i porady dotyczące debugowania problemów Unicode .

The other dużym zasobem kodu jest unicode.org , który zawiera więcej informacji, niż kiedykolwiek będziesz w stanie przejść przez-prawdopodobnie najbardziej przydatnym bitem jest wykresy kodu .

 410
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-03 22:02:07

Trochę czytania na początek kodowania znaków: Joel on Software: Absolutne Minimum każdy programista absolutnie, pozytywnie musi wiedzieć o Unicode i zestawach znaków (bez wymówek!)

Przy okazji - ASP.NET nie ma z tym nic wspólnego. Kodowanie jest uniwersalne.

 56
Author: Tomalak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-31 06:10:06