Является ли 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, особенно для языков Восточной Азии.