2009-04-14 9 views
31

Использует ли термин multibyte кодировку, символы которой могут, но не должны быть - более 1 байт (например, UTF-8), или это относится к наборам символов, которые в любом случае более 1 байт (например UTF-16)? Другими словами: что имеется в виду, если кто-нибудь говорит о многобайтовых наборах символов?Что такое многобайтовый набор символов?

ответ

29

Термин неоднозначно, но в моей интернационализация работе, мы, как правило, избегали термина "мультибайтные символы" для обозначения к кодировкам на основе Unicode. Как правило, мы использовали термин только для устаревших схем кодирования, которые имели один или несколько байтов для определения каждого символа (исключая кодировки, для которых требуется только один байт на символ).

Shift-jis, jis, euc-jp, euc-kr, наряду с китайскими кодировками, как правило, включены.

Большинство устаревших кодировок, за некоторыми исключениями, требуют своего рода модели конечного автомата (или, проще говоря, модели подкачки страниц) для обработки, а перемещение назад в текстовом потоке сложнее и подвержено ошибкам. UTF-8 и UTF-16 не страдают от этой проблемы, так как UTF-8 может быть протестирован с помощью битовой маски, а UTF-16 можно протестировать против ряда суррогатных пар, поэтому перемещение назад и вперед в непатологическом документе может безопасно и без особых сложностей.

Несколько устаревших кодировок для таких языков, как тайский и вьетнамский, имеют некоторую сложность многобайтовых наборов символов, но на самом деле просто построены на объединении символов и обычно не объединены с широким термином «multibyte».

1

Обычно первый, то есть UTF-8-подобный. Для получения дополнительной информации см. Variable-width encoding.

2

Первый - хотя термин «кодирование с переменной длиной» было бы более уместным.

1

Я обычно использую его для обозначения любого символа, который может иметь более одного байта на символ.

5

Все наборы символов, на которых у вас нет 1 байт = 1 символьное отображение. Все варианты Unicode, но также и азиатские наборы символов являются многобайтными.

Для получения дополнительной информации, я предлагаю прочитать this Wikipedia article.

4

Многобайтовый символ будет означать символ, для кодирования которого требуется более 1 байт. Это не означает, однако, что все символы, использующие эту конкретную кодировку, будут иметь одинаковую ширину (в байтах). Например: кодированные символы UTF-8 и UTF-16 могут иногда использовать несколько байтов, тогда как все Кодированные символы UTF-32 всегда использовать 32 бита.

Ссылки:

16

Что имеется в виду, если кто-нибудь говорит о многобайтовых наборах символов?

Это, как обычно, зависит от того, кто разговаривает!

Логично, что он должен включать UTF-8, Shift-JIS, GB и т. Д .: кодировки переменной длины. UTF-16 часто не рассматривался в этой группе (хотя это своего рода то, что с суррогатами, и, конечно, это несколько байтов при кодировании в байты через UTF-16LE/UTF-16BE).

Но в Microsoftland термин более обычно используется для обозначения кодовой страницы по умолчанию для переменной длины (для устаревших приложений, отличных от Юникода, которых, к сожалению, еще много). В этом использовании UTF-8 и UTF-16LE/UTF-16BE не могут быть включены, потому что системная кодовая страница в Windows не может быть установлена ​​ни в одном из этих кодировок.

Действительно, в некоторых случаях «mbcs» является не более чем синонимом системной кодовой страницы, иначе известной (еще более вводящей в заблуждение), как «ANSI». В этом случае набор «многобайтовых» символов может фактически быть чем-то таким же тривиальным, как cp1252 западноевропейский, который использует только один байт на символ!

Мой совет: используйте «переменную длину», когда вы имеете в виду это, и избегайте двусмысленного термина «многобайтовый»; когда кто-то другой его использует, вам нужно попросить разъяснений, но обычно кто-то с фоном Windows будет говорить о устаревшей кодировке Восточной Азии, такой как cp932 (Shift-JIS), а не UTF.

0

Многобайтовый набор символов может содержать как однобайтовые, так и двухбайтовые символы . Таким образом, многобайтовая символьная строка может содержать смесь однобайтовых и двухбайтовых символов.

Ref: Single-Byte and Multibyte Character Sets

 Смежные вопросы

  • Нет связанных вопросов^_^