Есть только две причины, чтобы когда-либо использовать UTF-16 в формате обмена (то есть, тот, который отправляется из А в В):
- Вы не проектировали тип документа и должны взаимодействовать с тем, что уже использует его.
- Ваш контент таков, что в некоторых языках UTF-16 короче. Это относительно редко, так как даже с этими языками в миксе часто присутствует большое количество символов из BMP, поэтому UTF-8 в итоге получается более лаконичным.
За исключением этого случая, есть только две причины использовать что-либо кроме UTF-8 в формате обмена:
- Вы не разработали тип документа и должны взаимодействовать с чем-то, что уже использует устаревшие наборы символов.
- Ты ненавидишь людей.
Номер 2 особенно актуален, если вы особенно ненавидите иностранцев и людей, которые не говорят на вашем родном языке, но если вы просто ненавидите людей в целом, у вас будет достаточно головной боли для достаточного количества людей, и вы найдете, что упражнение удовлетворительное.
Теперь, если исходить из того, что данный формат документа, разработанный кем-то другим, допускает UTF-8, и вы можете ожидать, что все современное программное обеспечение, работающее с ним, сможет обрабатывать UTF-8, то есть две причины не делать это:
- Существует некоторая проверка безопасности данных, чтобы убедиться, что она не была изменена (обратите внимание, если вы каким-либо образом редактируете или изменяете документ, это по своей сути не применяется).
- Ты ненавидишь людей. Снова с бонусом для ксенофобов.
Для вашего внутреннего хранения это просто вопрос того, что для вас наиболее полезно. Как правило, .NET имеет значение по умолчанию UTF-16, когда в памяти ( char и string работают с этим) и UTF-8 при записи и чтении из строк. Если вашим резервным хранилищем является SQL Server, то UTF-16 - ваш друг (варианты 'char', 'nvarchar', 'ntext' 'char', 'varchar', 'text', чтобы избежать проблем, если набор символов был установить любое другое значение, кроме UTF-8), и другие базы данных либо имеют свой собственный способ работы с современными персонажами, либо могут использовать UTF-8.
В общем, используйте UTF-8, если кто-то не заставляет вас поступать иначе (потому что они были вынуждены иметь дело с кодом с 1990-х или ранее, или потому что они ненавидят людей).