Точку зрения израильских разработчиков поддержали некоторые резиденты HN, а также инженеры из IBM и консорциума W3C, разрабатывающего технологические стандарты для Всемирной паутины.
Мы решили разобраться в ситуации и рассмотреть аргументы сторон.

Фото — Raphael Schaller — Unsplash
Польза от внедрения UTF-8
Обратная совместимость. Все символы в этой кодировке представлены одним байтом и фактически дублируют ASCII. Такой подход упрощает взаимодействие со старым ПО. При этом в UTF-8 нет нулевых байтов (в отличие от UTF-16), что дает возможность работать с нулевыми символами в строках.
Этот факт позволяет избежать ошибок, когда утилита интерпретирует такое значение как конец файла. Условно, если данные UTF-16 передать в строке Си, то она может быть обрезана на первом символе ASCII, который система посчитает служебным.
Специалисты из W3C также рекомендуют использовать UTF-8 при разработке внешних интерфейсов. Как пишут представители организации, другие варианты кодировок могут приводить к проблемам в работе сетевых устройств при передаче ASCII-байтов.
Проверка целостности. Резидент Hacker News отметил, что восьмибитный формат преобразования юникода позволяет отлавливать ошибки кодирования на ранних этапах. В UTF-8 входной поток читается по байтам и интерпретируется последовательно, и значение кодовой точки вычисляется однозначно. В этом случае разработчикам приложений не нужно беспокоиться о порядке байтов (Little-Endian или Big-Endian).
Что интересно, вопрос, касающийся проблемы UTF-8, поднимали еще десять лет назад на StackOverflow. Тогда Павел Радзивиловский (Pavel Radzivilovsky) — один из авторов манифеста — отметил, что его компания, разрабатывающая программное обеспечение в области фотограмметрии, полностью перешла на работу с этой кодировкой. Одной из причин как раз была простота взаимодействия с кодом, передающим строки с помощью char*.
Небольшая экономия памяти. Большинство кодовых точек юникода занимают одинаковое количество байтов в UTF-8 и UTF-16. Например, этот факт справедлив для русского, греческого языков, а также иврита. Однако для букв латинского алфавита вместе с символами пунктуации и ASCII нужно меньше памяти в UTF-8.
Но есть и аргументы против
Среди резидентов Hacker News нашлись и те, кто назвал неудачной идею «поголовного» перехода на UTF-8. Представление публичных имен (например, путей к папкам) в этой кодировке может создавать риски для кибербезопасности. С её помощью можно создавать похожие друг на друга идентификаторы (имена файлов), что открывает новые векторы фишинговых атак для хакеров.

Фото — Gemma Evans — Unsplash
Также есть мнение, что экономия памяти достигается не для всех языков. В частности, азиатские иероглифы требуют больше места для кодирования в UTF-8. Однако инженеры из IBM говорят, что даже в этом случае увеличение размера текстового файла по сравнению с UTF-16 будет незначительным. Например, японская идеограмма, обозначающая «дерево», занимает 3 байта в UTF-8. Но для кодировки английского слова tree потребуется уже 4 байта.
В целом дискуссия, связанная с внедрением единой кодировки, идет давно. И для повсеместного распространения кодировки первые шаги в этом направлении должны будут сделать крупные ИТ-компании. И подвижки уже есть — в Microsoft с недавних пор рекомендуют использовать UTF-8 при разработке веб-приложений.
В нашем блоге на сайте компании:
Ситуация: нарушают ли AdTech-компании GDPR?
Эра 10-нм чипов — кто разрабатывает такие процессоры и что ждет индустрию в будущем
Как новые возможности панели 1cloud помогают клиенту: опыт компании «Комплекс-ойл»
«Прячь www»: почему разработчики мейнстрим-браузера снова отказались от отображения поддомена
«Как мы строим IaaS»: материалы о работе 1cloud
ссылка на оригинал статьи https://habr.com/ru/company/1cloud/blog/501304/
Добавить комментарий