Analizując atrybuty UTF-16 i UTF-8, nie mogę znaleźć żadnego powodu, aby preferować UTF-16.Czy istnieje jakikolwiek powód, aby preferować kodowanie UTF-16 nad UTF-8?
Jednak sprawdzając Javę i C#, wygląda na to, że ciągi i znaki są tam domyślnie UTF-16. Myślałem, że może to wynikać z przyczyn historycznych, a może ze względów wydajnościowych, ale nie mogłem znaleźć żadnych informacji.
Ktoś wie, dlaczego te języki wybrały UTF-16? I czy istnieje jakikolwiek ważny powód dla mnie, aby to zrobić?
EDIT: Tymczasem ja również this answer, co wydaje się istotne i ma kilka ciekawych linków.
Poza moją odpowiedź, chciałbym powiedzieć, że .NET/C# wybrali UTF-16, ponieważ jest to „native” kodowanie Windows: łatwiej jest współdziałanie z natywnym systemie Windows, jeśli jesteś przy użyciu to samo kodowanie. –
Do jakich celów wybierasz kodowanie? UTF-16 jest rozsądnym wyborem do obsługi ciągów w pamięci, podobnie jak 'wchar_t', który będzie UTF-16 na Windowsie i zwykle na UTF-32 gdzie indziej. Ale w przypadku protokołów on-the-wire i przechowywania plików, UTF-8 jest prawie zawsze najlepszym wyborem. – bobince
@codeka: Zgadzam się (dał +1), ale można również zadać pytanie "dlaczego jest natywne kodowanie systemu Windows UTF-16, a nie UTF-8?". –