Обсуждение:UTF-8
Проект «Информационные технологии» (уровень II, важность для проекта средняя)
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
Великолепным людям (по поводу удаления иллюстрации) посвящается править
(неэтичная реплика удалена) Callidus (обс.) 01:52, 26 марта 2021 (UTC)
Напоминание желающим редактировать статью править
Как администратор, напоминаю, что в Википедии нельзя публиковать никаких своих собственных исследований, включая исходные коды, таблицы и т.д. Потому что проверять ваши коды и таблицы на безошибочность ни у кого нет ни времени, ни желания. Можно только копировать из авторитетных источников с обязательным указанием этих источников. И только то, что непосредственно относится к кодировке UTF-8. Другие вопросы и кодировки описываются в других статьях. --CodeMonk (обс.) 17:13, 8 декабря 2017 (UTC)
- (неэтичная реплика удалена) Callidus (обс.) 02:13, 26 марта 2021 (UTC)
Ошибки в табличке править
Мне показалось, что в схеме, в общем-то очень хорошо и наглядно составленной, есть ошибка. А именно (цитирую):
"На схеме в скобках первое «приглушённое» значение представлено в шестнадцатиричном значении и представляет из себя инвертированную битовую маску. Такие маски удобно и оптимально применять на платформах вроде x86 с инструкциями «test» и «and» с флагом ZF для проверки вхождения в диапазон".
Т. е. речь идет о битовой маске, позволяющей проверить, что некоторое число не укладывается в диапазон, соответствующий данной инвертированной битовой маске, а следовательно это число не может быть представлено в кодировке UTF-8 цепочкой соответствующего типа и соответствующей длины и нужна более длинная цепочка. В "псевдокоде" можно так записать
wchar_t c;
wchar_t mask_i;
if(c & mask_i) {<Число невозможно представить цепочкой длиной i байт, нужно использовать более длинную цепочку>}
Если я, конечно, правильно понял смысл этой битовой маски.
Но в таком случае для первой и второй битовой маски вроде бы указаны неправильные шестнадцатиричные значения.
Указано
1) FF.FF.FF.F8
2) FF.FF.FF.80
Должно быть соответственно
1) FF.FF.FF.80
2) FF.FF.F8.00
Для остальных битовых масок у меня все сошлось, там вроде ошибок нет. Или я ошибаюсь? Проверьте, если ошибка есть, возможно удастся переделать, слегка подправить табличку.
188.123.241.56 12:09, 18 мая 2013 (UTC)
- По моему, Вы правы, автор схемы 21 марта внёс не те исправления в схему - вместо убирания лидирующих F убрал завершающие 0. Поправил.--SEA99 21:25, 18 мая 2013 (UTC)
- Спасибо!
188.123.241.56 13:06, 19 мая 2013 (UTC)
Про кирилицу - кирилический символ представляется двумя байтами, а не одним. Если я не заблуждаюсь, исправте. 129.199.122.205 19:56, 16 февраля 2009 (UTC)
- Вы абсолютно правы. С уважением, Animist обс. 08:11, 17 февраля 2009 (UTC)
неплохо бы в таблице сравнения юникода и утф-8, написать что вторая записана побайтно в двоичной системе исчисления, а то это не совсем очевидно 77.66.210.145 23:38, 17 февраля 2009 (UTC)
где взаимосвязь Plan-9 и UTF-8 править
Почему эта статья входит в категорию Plan_9? ShCoder 07:42, 19 сентября 2008 (UTC)
- Потому что «Формат UTF-8 был изобретён 2 сентября 1992 года Кеном Томпсоном и Робом Пайком и реализован в Plan 9» Chamie 14:37, 29 октября 2008 (UTC)
Не верно: В отличие от UTF-16, UTF-8 является самосинхронизирующейся кодировкой (англ.) править
UTF-16 так-же является самосинхронизирующейся кодировкой.
79.164.33.234 12:58, 4 марта 2012 (UTC) K.Tishin
- Если рассматривать UTF-16 как поток 16-битных блоков, то она самосинхронизирующаяся. Если же её рассматривать как поток байтов, то она несамосинхронизирующаяся, поскольку если у неё отрезать нечётное число байтов в начале, то дальше будут одни крокозябры. — Monedula 15:16, 4 марта 2012 (UTC)
Меня корёжит текстовое описание править
Я работал с кодировкой UTF-8 не один раз. Писал различные кодировщики и раскодировщики на разных языках программирования. Видел что статья не полная и не один день пытался текстом нормально описать её, но это ебанистика какая-то. Сознательно вырезал его, так как для работы мне достаточно графической штуки, которую я сделал. Может быть есть люди, которые текст лучше воспринимают, но для меня это так же не удобно как объяснять в деталях как нормально построить мост — проще человеку чертёж показать. Поэтому оставил всё в наглядном табличном и графическом виде, так как сама кодировка тупо раскладывает биты по нужным ячейкам. Нужен будет текст — пишите если прёт. Callidus 15:26, 19 декабря 2012 (UTC)
И совершенно напрасно. Хорошое текстовое описание было бы как нельзя кстати. Знаю, что такие вещи ОЧЕНЬ сложно описывать словесно, очень тяжело добиться того, чтобы это был не набор каких-то непонятных трудночитаемых слов, а действительно связный понятный красивый и легкий для прочтения текст. Но если автору удалось хорошо описать такую кодировку словесно - польза для читающего будет огромная. Самое лучшее описание сначала подробное словесное (тут, наверное, нужно написать о том, что для 7-битных символов признаком конца цепочки является 0 в 8-ом разряде, символом продления цепочки является 10 в старших, т. е. 7-ом и 8-ом, битах, а символом завершения цепочки единички в старших битах, число которых равно числу использованных в цепочке байт, после которых стоит 0, т. е. что-то вроде 11...10), потом формализованное, изложенное через побитовые операции (&, AND, TEST), а потом графическая схема, после которой наступает окончательная ясность. Мне лично так кажется. Схема Ваша хорошая, мне понравилась, но вроде есть в ней ошибка (хотя не знаю, я тут не профи). Думаю, что словесное описание этой кодировки и описание с использованием побитовых логических операций должно быть в каких-то популярных учебниках по программированию, в которых эта кодировка рассматривается. 188.123.241.56 11:21, 18 мая 2013 (UTC)
Не пишите под принципом кодирования ничего (пилюля для трезвости) править
Я сам пытался написать какой-то вменяемый текст, но только месово получалось (толи из-за самосинхронизацаии или из-за поддежки ASCII — исключение же; но в сознании это превращалось в кашу). При этом всегда с лёту могу написать енкодер и декодер. И схему я нарисовал так же (прошу прощения за ошибки — вторую правку делал пьяным в полусознательном состоянии и еле-еле рассчитал все диапазоны попутно добавив две таблицы снизу). Это я к тому что текст не всё может передать. Попробуйте описать текстом точные движения танца. Поверни правую ногу запястьем на угол блин, сферический (12° по X и 37° по Z; я даже сам растеряюсь). Другое дело если тот самый смысл передать через видео.
Думал про UTF-8 как помешанный и в итоге нагенерил с десяток кодировок в Экселе, а потом отобрал лучшие чтобы не зря день прожить. Если ты умеешь программировать, то сумееешь раскидать биты и здесь: (удалено)
Кароче не пишите больше под принципом действия трактатов на вроде «старший бит нужен для отличия ASCII-символов от остальных». Человеческий глаз 90 % (я приуменьшил) информации воспринимает и там самый быстрый анализатор. Если я вижу что эти биты нужно поместить туда, а эти должны быть выставлены в 1, то это плёвая задача про программиста (если ты на каком-нить Basic программируешь, то же самое арифметически можно сделать — вспомни что в школе делали с двоичной системой счисления в перемешку с десятичной).
Пишите только во введениии и «Интересные факты». Ей богу это как статья на тему как перегнать 100 % в 255 значений байта или как яийца пожарить имея яйца и нож?. Там битовые сдвиги (в обе стороны), And и Or хватит (на x86 с помощью BTR ещё можно изящно выкрутится).
PS: И на статью про HTTP хоть подрочите. Меня одного чтоли в России этот протокол интесует что каждый байт разобрал. Как точно If-Modified-Since передаётся по всем спецификациям? Перед запятой можно пробельный символ лепить или нет. Просто жалко.
то октеты, то байты править
Вы либо юзайте октеты, либо юзайте байты... Не надо ерундой заниматься... Да будет с Вами бритва Оккама.