Что такое слишком длинная форма / кодировка? - PullRequest
17 голосов
/ 18 августа 2011

Читая статью в Википедии о UTF-8 , я размышлял над термином overlong . Этот термин используется несколько раз, но в статье нет определения или ссылки на его значение.

Я хотел бы знать, может ли кто-нибудь объяснить термин и его назначение.

Ответы [ 2 ]

18 голосов
/ 18 августа 2011

Это кодировка кодовой точки, которая занимает больше единиц кода, чем необходимо.

Например, U + 0020 представлен в UTF-8 одним байтом 0x20. Если вы декодируете два байта 0xc0 0xa0 обычным способом, вы все равно получите U + 0020, но это неверное представление.

Исправление Unicode # 1 содержит больше информации, особенно в таблице 3.1B.

5 голосов
/ 18 августа 2011

UTF-8 теоретически допускает различные представления символов, которые также имеют более короткое представление. Например, вы можете закодировать символ ASCII в два байта, установив MSB в ноль. Спецификация UTF-8 прямо запрещает это.

...