Encoding.UTF8 или Encoding.Unicode? - PullRequest
       34

Encoding.UTF8 или Encoding.Unicode?

0 голосов
/ 27 сентября 2018

Является ли Encoding.Unicode просто именем для UTF-16?Тогда почему он называется просто Unicode вместо UTF16?

В документации по кодированию Microsoft заявляет, что для большинства сценариев и приложений следует избегать использования Encoding.ASCII и Encoding.Default.

При использовании System.Text.Encoding.В большинстве случаев я должен использовать Encoding.Unicode или Encoding.UTF8?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Является ли Encoding.Unicode просто именем для UTF-16?

Да.В частности, для байтов UTF-16 с прямым порядком байтов.Encoding имеет отдельное свойство BigEndianUnicode для старшего порядкового номера UTF-16.

Тогда почему его называют просто Unicode вместо UTF16?

По историческим причинам.Microsoft была одной из первых компаний, принявших Unicode, поэтому у нее была реализация Unicode в Windows еще в первые дни Unicode, до изобретения UTF-16.«Юникод» - это де-факто имя Microsoft для обозначения любой его собственной кодировки Юникод, которая раньше была UCS-2, а теперь - UTF-16.

При использовании System.Text.Encoding.В большинстве случаев я должен использовать Encoding.Unicode или Encoding.UTF8?

Это действительно зависит от ваших конкретных сценариев.Используйте любую кодировку, соответствующую вашим потребностям.Оба кодирования имеют свои сильные и слабые стороны.

UTF-8 обычно используется для взаимодействия в протоколах связи, так как он не страдает от прямых ошибок и в значительной степени совместим с большинством существующих текстовых протоколов.Кроме того, обычно меньше для байтового хранилища, чем UTF-16 для большинства языков.

UTF-16 обычно легче обрабатывать в памяти, чем UTF-8, чтоВот почему так много библиотек и фреймворков используют его для строк.И это может быть меньше для байтового хранилища, чем UTF-8, особенно для языков Восточной Азии.

0 голосов
/ 27 сентября 2018

Это происходит с первых дней Unicode.Unicode 1.0 был 16-битной кодировкой, так как предполагалось, что 65536 кодовых точек будет достаточно.Unicode 2.0 отказался от этого ограничения, однако первые пользователи Unicode, включая Microsoft, назвали свою кодировку Unicode, и она застряла.

В настоящее время вы должны использовать UTF-8, если у вас нет специального, например устаревшего программного обеспечения, в котором вы нуждаетесь.интеграция с, причина для этого.

Причина этого в том, что ASCII двоично совместим с UTF-8, и существует лот ASCII

...