Этого не может быть в будущем.
Unicode
не является потенциально-переменной кодировкой; это просто Microsoft (печально вводящее в заблуждение) имя для UTF-16LE.
Это не изменится. Даже если Microsoft приступит к внедрению Windows API изначально в UTF-8 или UTF-32 (что-то не появляется никогда), System.Text.Encoding.Unicode
должен оставаться UTF-16LE, так как это определяется спецификацией .NET.
было бы лучше использовать UTF8
вместо Unicode
?
Используйте UTF8
, если массив содержит UTF-8 закодированных байт, и использовать Unicode
, если они находятся в UTF-16LE.
Если вы хотите выбрать, какое кодирование используется для хранения данных в покое, UTF-8 обычно является лучшим выбором для соображений экономии пространства.
Блестящий ответ. Спасибо. Однако как вы можете быть уверены, что Microsoft не изменит его? Разве им не разрешено изменять спецификацию .NET, если они этого хотят? Какие последствия это могло бы иметь, если бы они это сделали? –
Они могут, безусловно, изменить любое определение API в новой версии .NET, но они никогда не намекали на то, что определение Unicode, char или String может быть изменено, поэтому это был бы большой сюрприз для совместимости. В любом случае MS действительно * сдержанно нарушают старые API. Последний раз, когда произошла смена внутренней строковой кодировки, произошел переход от Windows 9x к NT, и старые (ANSI) API доступны по сей день. (Мы по-прежнему имеем дело с наследием этого, поскольку приложения C-stdlib по-прежнему не соответствуют строковым интерфейсам ANSI и не поддерживают UTF-8 в msvcrt.) – bobince