Консорциум Unicode намерен заставить UTF-16 исчерпать символы?

Текущая версия UTF-16 способна кодировать только 1112 064 разных номеров (кодовые точки); 0x0-0x10FFFF,

Консорциум Unicode намерен заставить UTF-16 исчерпать символы?

т.е. сделать кодовую точку> 0x10FFFF

Если нет, то зачем кому-то писать код для синтаксического анализатора utf-8, чтобы он мог принимать последовательности из 5 или 6 байтов? Так как это добавило бы ненужные инструкции к их функции.

Разве 1,112,064 не достаточно, нам действительно нужно БОЛЬШЕ символов? Я имею в виду: как быстро мы уходим?

4 ответа

Решение

По состоянию на 2011 год мы израсходовали 109 449 символов И отведены для использования в приложениях (6 400+131 068):

оставляя место для более чем 860 000 неиспользованных символов; достаточно для расширения CJK E(~ 10000 символов) и еще 85 подходов; так что в случае контакта с культурой ференги мы должны быть готовы.

В ноябре 2003 года IETF ограничил UTF-8 завершением на U+10FFFF с помощью RFC 3629, чтобы соответствовать ограничениям кодировки символов UTF-16: синтаксический анализатор UTF-8 не должен принимать 5 или 6-байтовые последовательности, которые могли бы переполнить набор utf-16 или символы в 4-байтовой последовательности, которые больше, чем 0x10FFFF

Пожалуйста, внесите изменения, перечисляющие наборы, которые представляют угрозу для размера предела кодовой точки Юникода, если они превышают 1/3 размера расширения CJK E(~ 10000 символов):

Резка в погоне:

Действительно намеренно, что система кодирования поддерживает только кодовые точки до U+10FFFF

Похоже, что в ближайшее время нет никакого реального риска закончиться.

В настоящее время стандарт Unicode не определяет символы выше U+10FFFF, поэтому вы можете написать свое приложение, чтобы отклонять символы выше этой точки.

Прогнозировать будущее сложно, но я думаю, что с этой стратегией вы в ближайшей перспективе в безопасности. Честно говоря, даже если Unicode расширится до U + 10FFFF в отдаленном будущем, это почти наверняка не будет для критически важных глифов. Ваше приложение может быть несовместимо с новыми шрифтами Ferengi, которые выйдут в 2063 году, но вы всегда можете исправить это, когда оно действительно становится проблемой.

Нет причин писать анализатор UTF-8, который поддерживает последовательности 5-6 байтов, за исключением поддержки любых унаследованных систем, которые их фактически использовали. Текущая официальная спецификация UTF-8 не поддерживает 5-6-байтовые последовательности, чтобы обеспечить 100% -ое преобразование без потерь в / из UTF-16. Если есть время, когда Юникод должен поддерживать новые кодовые точки выше U+10FFFFбудет много времени для разработки новых форматов кодирования для большего количества битов. Или, может быть, к тому времени, когда это произойдет, памяти и вычислительной мощности будет достаточно, чтобы все просто переключились на UTF-32 для всего, что может выдержать до U+FFFFFFFF более 4 миллиардов символов.

Другие вопросы по тегам