#unicode #encoding
#Юникод #кодирование
Вопрос:
Я прочитал статью, в которой говорится о кодировании текста. Это относится к тому, что утверждение о том, что буква Юникода состоит из двух байтов, является мифом. Это объясняет это, но мой английский недостаточно хорош, чтобы понять причины.
Пожалуйста, кто-нибудь здесь может объяснить этот факт, если это правда, и причины? Пожалуйста, сохраняйте максимально простой английский.
Комментарии:
1. Я почти уверен, что это верно для любого алфавита, содержащего более 256 букв..
Ответ №1:
Может потребоваться больше или меньше, в зависимости от формата Юникода и того, какой символ вы хотите представить. Не более 4 байт на символ:
Стандарты кодирования символов определяют не только идентификатор каждого символа и его числовое значение, или кодовую точку, но также и то, как это значение представлено в битах.
Стандарт Юникода определяет три формы кодирования, которые позволяют передавать одни и те же данные в формате, ориентированном на байт, слово или двойное слово (т. е. в 8, 16 или 32 битах на единицу кода). Все три формы кодирования кодируют один и тот же общий набор символов и могут быть эффективно преобразованы друг в друга без потери данных. Консорциум Unicode полностью одобряет использование любой из этих форм кодирования в качестве соответствующего способа реализации стандарта Unicode.
UTF-8 популярен для HTML и подобных протоколов. UTF-8 — это способ преобразования всех символов Юникода в байтовую кодировку переменной длины. Преимущества этого метода заключаются в том, что символы Юникода, соответствующие знакомому набору ASCII, имеют те же значения в байтах, что и ASCII, и что символы Юникода, преобразованные в UTF-8, могут использоваться со многими существующими программами без масштабной перезаписи программного обеспечения.
UTF-16 популярен во многих средах, которым необходимо сбалансировать эффективный доступ к символам с экономичным использованием хранилища. Он достаточно компактен, и все часто используемые символы умещаются в одном 16-битном кодовом блоке, в то время как все остальные символы доступны через пары 16-битных кодовых блоков.
UTF-32 полезен там, где не беспокоит объем памяти, но требуется фиксированная ширина, доступ к символам в единицах кода. Каждый символ Юникода кодируется в одной 32-битной кодовой единице при использовании UTF-32.
Для всех трех форм кодирования требуется не более 4 байт (или 32 бит) данных для каждого символа.
Комментарии:
1. IIRC UCS-2 — это кодировка, используемая внутри Windows и Java для именования пары, и представляет собой фиксированное 2-байтовое представление.
2. Windows использует UTF-16 вместо UCS-2 начиная с Windows 2000.
Ответ №2:
Windows и многие устаревшие приложения традиционно использовали 16 бит (два байта) для представления символов Юникода, но фактический стандарт составляет 21 бит (от 0x000000 до 0x10ffff). Вот почему существует так много разных кодировок (UTF-8 и так далее). Сегодня наиболее распространенным внутренним представлением символов Юникода внутри программ должно быть UTF-32 (32 бита, 4 байта), в то время как большинство хранится на диске в формате UTF-8.
Для получения дополнительной информации о различных схемах кодирования Unicode смотрите эту статью в Википедии: http://en.wikipedia.org/wiki/Comparison_of_Unicode_encodings
Комментарии:
1. В старых версиях Windows использовался UCS-2, который поддерживал только первые 65535 кодовых точек Юникода. Современные версии вместо этого используют UTF-16, который по-прежнему использует 16-разрядные кодовые единицы и обратно совместим с UCS-2, но может представлять любую 21-разрядную кодовую точку, определенную в Юникоде.