Pull to refresh

Comments 13

Она может кодировать один символ от 1 до 6 байтами.

После того как в стандарте максимальный codepoint ограничили значением 10FFFF, уже не может. 4 байта хватит всем.

Спасибо большое за дополнительную информацию. Будет ли у вас ссылка источник откуда вы узнали это? Отправьте если есть, пожалуйста

Насколько я помню, в Unicode 1.0 для codepoint не было такого ограничения, но уже в какой-то из последующих версий это было добавлено, т.к. кодировка UTF-16 не способна представлять большие значения через механизм суррогатных пар.

Могу сослаться на определение в текущем стандарте:
https://www.unicode.org/versions/Unicode15.1.0/ch03.pdf
"Unicode codespace: A range of integers from 0 to 10FFFF."

ASCII – это самая первая кодировка в мире, она была создана в Америке. Собственно благодаря ей, 8 бит равны 1 байт.

Это же немного неправда - сама ASCII была основана на более ранних кодировках ITA, а значит не была "самой первой". Во-вторых, кодировка ASCII использует только 7 бит, а значит она не могла быть причиной перехода на 8 битный байт. Даже в истории стандарта указывается, что используются только младшие 7 бит для экономии при передаче данных - было бы логичнее тогда, что ascii привела бы к популяризации 7-битного байта. 8-ой бит использовали iso-кодировки для расширения ascii на европейские языки.

И писать в одном абзаце, что 30 бит на кодировку одного символа - это избыточно и расточительно, а в следующем рассказывать про UTF-32. Какие такие мажоры до него додумались?.

Добавлю, то что байт именно 8 бит, мы обязаны IBM и её 8-битной кодировке EBCDIC.

Спасибо большое за дополнительную информацию. Будет ли у вас ссылка источник откуда вы узнали это? Отправьте если есть, пожалуйста. Буду рад подробнее ознакомиться с этой темой т.к. в источниках где я проводил поиск, была немного другая информация.

По поводу UTF-32, конкретно про данную кодировку мне тоже мало что известно сейчас. В статье я опирался в основном на UTF-8

8-битовый байт оптимален с точки зрения аппаратной реализации, и Америка тут в общем-то не при чём.

Для железа 1970-х, 80-х, когда складывались языки, стандарты и концепции, которые и сейчас живы.
В железе сейчас уже почти нигде нет 8-битных шин.

Еще до "полноты бардака картины" можно было добавить упоминание об LE, BE и BOM.

А ещё была (в компьютерах PDP-11 американской фирмы DEC, Digital Equipment Corporation) экзотическая кодировка RADIX-50: в 16-битное слово упаковывались три символа, занимая 5 бит каждый. Крайне ограниченный алфавит включал 22 символа латиницы (только заглавные буквы), пробел, цифры 0...9, точку и символ $. Маловато, но хватало для записи названий файлов, для этого и использовалась.

Правильнее будет говорить об ОС RT-11, которая была сделана для PDP-11. Но ее варианты использовались на очень большом количестве более поздних машин, в том числе персоналках серий ДВК, УКНЦ, БК0011. В RT-11SJ файловая система использовала RADIX-50. 6 символов на имя и три на расширение.

  • Кодировка UTF-16: он состоит из двух байтов (то есть 16 бит). Это означает что один символ весит 16 бит. В данную кодировку вмещается 2 ^ 16 = 65536 различных символов.

Ну вот нет. UTF-16 и UCS-2 - это разные кодировки. И та и другая используют двухбайтные слова, только у UCS-2 - на один символ ровно одно слово, поэтому она вмещает 65536 символов, а UTF-16 - это кодировка переменной длины! Почитайте про суррогатные пары самостоятельно, пожалуйста.

До кучи, ещё есть UTF-7.

Практический смысл разных UTF-n в том, что для ASCII (наиболее расхожий набор символов) UTF-8 кодируется 1 байтом, и для европейских алфавитов и всякой популярной графики UTF-16 кодируется одним словом (но китайцы уже страдают!), а UTF-32 хватит для всего UCS-4 - и вот это уже кодировка фиксированной длины.

Sign up to leave a comment.

Articles