Консорциум 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 символов):
- CJK расширение E(~ 10000 символов)
- Персонажи культуры ференги(~5000 символов)
Резка в погоне:
Действительно намеренно, что система кодирования поддерживает только кодовые точки до 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 миллиардов символов.