Должен ли я перейти с UTF-8 на UTF-16 для размещения китайских символов в моем HTML?

Я использую ASP.NET MVC, MS SQL и IIS. У меня есть несколько пользователей, которые использовали китайские иероглифы в информации своего профиля. Тем не менее, когда я отображаю эту информацию, отображается какæŽå¼·è¯ но они верны в моей базе данных. В настоящее время мой UTF для моих HTML-страниц установлен в UTF-8. Должен ли я изменить его на UTF-16? Я понимаю, что естьнесколько проблем что может исходить из этого, но каков мой выбор?

Спасибо,

Аарон

 Aaron Salazar05 окт. 2010 г., 17:00
это только для PHP, верно?
 Andrew6705 окт. 2010 г., 16:53
ты используешьhtmlentities() или жеhtmlspecialchars() при выводе?
 Jonas Stawski21 авг. 2017 г., 22:18
Вы пытались указать свой набор символов в мета-тегах?w3.org/International/questions/qa-html-encoding-declarations

Ответы на вопрос(2)

UTF-8 и UTF-16 кодируют абсолютно одинаковый набор символов. Дело не в том, что UTF-8 не охватывает китайские иероглифы, а UTF-16 делает. UTF-16 равномерно использует 16 бит для представления символа; в то время как UTF-8 использует 1, 2, 3, максимум до 4 байтов, в зависимости от символа, так что символ ASCII представляется еще как 1 байт. Начать сэта статья в Википедии чтобы получить идею за этим.

Так что переход на UTF-16 вряд ли поможет вам. Существует вероятность того, что все становится еще хуже, как обсуждалось в SO-вопросе, который вы указали выше. Есть проблема где-то еще в вашей настройке, которая неправильно учитывает символы не ASCII или не Latin-1. Убедитесь, что каждая часть вашей настройки работает в UTF-8.

 joakim27 нояб. 2014 г., 02:27
@yuji На самом деле UTF-8 может использовать до 4 байтов. Первоначально это было 6, но после осознания того, что это будет излишним (сегодня мы используем только около 110 000, тогда как 6 байтов позволят 2 миллиарда!), Люди согласились на 4 байтаtools.ietf.org/html/rfc3629
 Anton Roslov22 авг. 2013 г., 13:31
UTF-16 может иметь 2 кодовые единицы по 16 бит каждая, для представления символа нужно всего 32 бита, см. Некоторые примеры вen.wikipedia.org/wiki/UTF-16

Любое кодирование UTF должно работать одинаково в их способности представлять символы Unicode, поэтому переключение на UTF-16 не поможет. Где-то есть проблема с кодировкой, и с UTF-16 у вас будет только другое неправильное представление HTML. Конечно, если у вас есть библиотека, которая просто кодирует не-ASCII-символы как сущности и поддерживает широкие символы, ваша проблема может быть решена с помощью переключателя. Однако есть символы, которым нужно даже 2 широких символа, и они все равно будут отображаться неправильно, хотя пользователи могут заметить это редко. Лучшим вариантом будет иметь то, что создает HTML, чтобы правильно интерпретировать ваш UTF-8.

Ваш ответ на вопрос