Я думаю, что (косвенная) точка, которую вы делаете, состоит в том, что вы почти всегда хотите ее использовать. В общем, лучше всего начинать принимать данные Unicode с самого начала, иначе вы получите устаревшую головную боль, которую вы не хотите. Вы будете удивлены тем, что вы можете упустить из-за ожидаемого ввода. И системы имеют привычку становиться больше, чем вы ожидали, с необходимостью обработки интернационализированных материалов. Есть определенные поля, которые вы хотите ограничить. Например, если вы храните имена доменов, поддержка разных систем для многоязычных символов, вероятно, будет ненадежной (она обрабатывается), поэтому вы захотите ограничить ввод таких вещей. В таких случаях вам необходимо ограничить ввод на более высоком уровне, например, с помощью регулярных выражений на уровне пользовательского интерфейса, иначе, если вы объявили поле varchar в базе данных, вы просто закончите с совершенно неправильным символом сохраняются, если символ Юникода удается пройти.
пространство не является проблемой в эти дни, однако есть соображения производительности, хотя сценарии вряд ли перевесит необходимость масштабируемости:
https://msdn.microsoft.com/en-us/library/ms189617.aspx
Критической точкой является то, что вам нужно явно указать что вы используете UTF-8 последовательно на всех уровнях применения для полной международной поддержки.
Возможный дубликат [В чем разница между varchar и nvarchar?] (Http://stackoverflow.com/questions/144283/what-is-the-difference-between-varchar-and-nvarchar) –
Другие вопросы и ответы та же тема http://stackoverflow.com/questions/612430/when-must-we-use-nvarchar-nchar-instead-of-varchar-char-in-sql-server –
'nvarchar' использует вдвое больше места для хранения, чем 'varchar' (всегда 2 байта на символ вместо 1). Так что, если вы действительно не нуждаетесь в символах Unicode, это просто пустая трата пространства. –