Обсуждение:UTF-8

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Великолепным людям (по поводу удаления иллюстрации) посвящается[править код]

(неэтичная реплика удалена) 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 передаётся по всем спецификациям? Перед запятой можно пробельный символ лепить или нет. Просто жалко.

Callidus 05:07, 7 июня 2013 (UTC)[ответить]

то октеты, то байты[править код]

Вы либо юзайте октеты, либо юзайте байты... Не надо ерундой заниматься... Да будет с Вами бритва Оккама.