{"id":320967,"date":"2021-04-06T15:00:26","date_gmt":"2021-04-06T15:00:26","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=320967"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2021-04-06T15:00:26","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=320967","title":{"rendered":"\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f UTF-8 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u0437\u0430 \u043e\u0434\u043d\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043d\u0430 \u0431\u0430\u0439\u0442"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rs\/o4\/jn\/rso4jnwkfv2sqg11qjacnhhifqq.png\"><\/p>\n<p>  \u0414\u0430\u043d\u0438\u044d\u043b\u044c \u041b\u0435\u043c\u0438\u0440 \u2013 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u043e\u0440 \u0417\u0430\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u0432\u0435\u0431\u0435\u043a\u0441\u043a\u043e\u0433\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0430 (T\u00c9LUQ), \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0432\u0448\u0438\u0439 <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/542640\/\">\u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u044c double<\/a> \u2013 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0414\u0436\u043e\u043d\u043e\u043c \u041a\u0430\u0439\u0437\u0435\u0440\u043e\u043c \u0438\u0437 Microsoft <a href=\"https:\/\/arxiv.org\/pdf\/2010.03090.pdf\">\u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438<\/a> \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0441\u0432\u043e\u044e \u043d\u0430\u0445\u043e\u0434\u043a\u0443: \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440 UTF-8, \u043e\u0431\u0433\u043e\u043d\u044f\u044e\u0449\u0438\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"http:\/\/utfcpp.sourceforge.net\/\">UTF-8 CPP<\/a> (2006) \u0432 48..77 \u0440\u0430\u0437, <a href=\"http:\/\/bjoern.hoehrmann.de\/utf-8\/decoder\/dfa\/\">\u0414\u041a\u0410 \u043e\u0442 \u0411\u044c\u0451\u0440\u043d\u0430 \u0425\u0451\u0440\u043c\u0430\u043d\u043d\u0430<\/a> (2009) \u2013 \u0432 20..45 \u0440\u0430\u0437, \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Google_Fuchsia\">Google Fuchsia<\/a> (2020) \u2013 \u0432 13..35 \u0440\u0430\u0437. \u041d\u043e\u0432\u043e\u0441\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/524426\/\">\u0443\u0436\u0435 \u043f\u043e\u0441\u0442\u0438\u043b\u0438<\/a>, \u043d\u043e \u0431\u0435\u0437 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439; \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u043d\u0435\u0434\u043e\u0447\u0451\u0442.<a name=\"habracut\"><\/a><\/p>\n<h3><font color=\"#3AC1EF\">\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f UTF-8<\/font><\/h3>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e Unicode \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 code points \u043e\u0442 U+0000 \u0434\u043e U+10FFFF, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 UTF-8 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043e\u0442 1 \u0434\u043e 4 \u0431\u0430\u0439\u0442\u043e\u0432:<\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<th>\u0427\u0438\u0441\u043b\u043e \u0431\u0430\u0439\u0442\u043e\u0432 \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435<\/th>\n<th>\u0427\u0438\u0441\u043b\u043e \u0431\u0438\u0442\u043e\u0432 \u0432 code point<\/th>\n<th>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/th>\n<th>\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/th>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>1..7<\/td>\n<td>U+0000 = 0<u>0000000<\/u><\/td>\n<td>U+007F = 0<u>1111111<\/u><\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>8..11<\/td>\n<td>U+0080 = 110<u>00010<\/u> 10<u>000000<\/u><\/td>\n<td>U+07FF = 110<u>11111<\/u> 10<u>111111<\/u><\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>12..16<\/td>\n<td>U+0800 = 1110<u>0000 <\/u>10<u>100000<\/u> 10<u>000000<\/u><\/td>\n<td>U+FFFF = 1110<u>1111<\/u> 10<u>111111<\/u> 10<u>111111<\/u><\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>17..21<\/td>\n<td>U+010000 = 11110<u>000<\/u> 10<u>010000<\/u> 10<u>000000<\/u> 10<u>000000<\/u><\/td>\n<td>U+10FFFF = 11110<u>100<\/u> 10<u>001111<\/u> 10<u>111111<\/u> 10<u>111111<\/u><\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>  \u041f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0442\u0430\u0440\u0448\u0438\u0435 \u0431\u0438\u0442\u044b \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0439\u0442\u043e\u0432 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438; \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0438\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u043e\u0434\u043d\u043e\u0431\u0430\u0439\u0442\u043d\u044b\u0445 (ASCII) \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0435 \u0434\u0432\u0430 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0431\u0438\u0442\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 <i>\u043c\u043d\u043e\u0433\u043e\u0431\u0430\u0439\u0442\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0438 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u2013 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0449\u0438\u0439 \u0431\u0430\u0439\u0442&gt;<\/i> \u043c\u043d\u043e\u0433\u043e\u0431\u0430\u0439\u0442\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430.<\/p>\n<p>  \u041a\u0430\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432 \u0441\u0442\u0440\u043e\u043a\u0435, \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c?<\/p>\n<ol>\n<li><u>\u041d\u0435\u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/u>: \u043d\u0430 \u043c\u0435\u0441\u0442\u0435, \u0433\u0434\u0435 \u043e\u0436\u0438\u0434\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0449\u0438\u0439 \u0431\u0430\u0439\u0442, \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0431\u0430\u0439\u0442 \u0438\u043b\u0438 ASCII-\u0441\u0438\u043c\u0432\u043e\u043b;<\/li>\n<li><u>\u041d\u0435\u043d\u0430\u0447\u0430\u0442\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/u>: \u043d\u0430 \u043c\u0435\u0441\u0442\u0435, \u0433\u0434\u0435 \u043e\u0436\u0438\u0434\u0430\u043b\u0441\u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0431\u0430\u0439\u0442 \u0438\u043b\u0438 ASCII-\u0441\u0438\u043c\u0432\u043e\u043b, \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0449\u0438\u0439 \u0431\u0430\u0439\u0442;<\/li>\n<li><u>\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/u>: \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0431\u0430\u0439\u0442 <code>11111xxx<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u044f\u0442\u0438\u0431\u0430\u0439\u0442\u043d\u043e\u0439 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d\u043d\u043e\u0439 \u0432 UTF-8;<\/li>\n<li><u>\u0412\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b Unicode<\/u>: \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u0447\u0435\u0442\u044b\u0440\u0451\u0445\u0431\u0430\u0439\u0442\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f code point \u0432\u044b\u0448\u0435 U+10FFFF.<\/li>\n<\/ol>\n<p>  \u0415\u0441\u043b\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u0442\u043e \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 code points. UTF-8, \u043e\u0434\u043d\u0430\u043a\u043e, \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u2013 \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 code points \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u042d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0449\u0451 \u0434\u0432\u0430 \u0440\u043e\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a:<\/p>\n<ol>\n<li><u>\u041d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/u>: \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e code point \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430;<\/li>\n<li><u>\u0421\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u044b<\/u>: code points \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 U+D800 \u0434\u043e U+DFFF \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f UTF-16, \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0442\u0430\u043a\u0438\u0445 \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u043e\u0432 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 code point \u0432\u044b\u0448\u0435 U+FFFF. UTF-8 \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0442\u0430\u043a\u0438\u0435 code points \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0430 \u043d\u0435 \u043a\u0430\u043a \u043f\u0430\u0440\u044b \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u043e\u0432.<\/li>\n<\/ol>\n<p>  \u0412 \u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 <a href=\"https:\/\/en.wikipedia.org\/wiki\/CESU-8\">CESU-8<\/a> \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e (\u0430 \u0432 <a href=\"https:\/\/www.oracle.com\/technical-resources\/articles\/javase\/supplementary.html\">MUTF-8<\/a> \u2013 \u0435\u0449\u0451 \u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435), \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0447\u0435\u043c\u0443 \u0434\u043b\u0438\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u0442\u0440\u0435\u043c\u044f \u0431\u0430\u0439\u0442\u0430\u043c\u0438, \u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u044e\u0442\u0441\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043c\u0430\u0439\u043b\u0438\u043a U+1F600 GRINNING FACE \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 UTF-16 \u043f\u0430\u0440\u043e\u0439 \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u043e\u0432 <code>0xD83D 0xDE00<\/code>, \u0438 CESU-8\/MUTF-8 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442 \u0435\u0451 \u0432 \u043f\u0430\u0440\u0443 \u0442\u0440\u0451\u0445\u0431\u0430\u0439\u0442\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 <code>0xED 0xA0 0xBD 0xED 0xB8 0x80<\/code>; \u043d\u043e \u0432 UTF-8 \u044d\u0442\u043e\u0442 \u0441\u043c\u0430\u0439\u043b\u0438\u043a \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0447\u0435\u0442\u044b\u0440\u0451\u0445\u0431\u0430\u0439\u0442\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e <code>0xF0 0x9F 0x98 0x80<\/code>.<\/p>\n<p>  \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0438\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0431\u0438\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a \u043d\u0435\u0439 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442:  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td rowspan=\"6\">\u041d\u0435\u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td rowspan=\"2\">\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430<\/td>\n<td><code>11xxxxxx 0xxxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>11xxxxxx 11xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\">\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 3-\u0435\u0433\u043e \u0431\u0430\u0439\u0442\u0430<\/td>\n<td><code>111xxxxx 10xxxxxx 0xxxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>111xxxxx 10xxxxxx 11xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\">\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 4-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430<\/td>\n<td><code>1111xxxx 10xxxxxx 10xxxxxx 0xxxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>1111xxxx 10xxxxxx 10xxxxxx 11xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"4\">\u041d\u0435\u043d\u0430\u0447\u0430\u0442\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 2-\u043e\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>0xxxxxxx 10xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 3-\u0438\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>110xxxxx 10xxxxxx 10xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 4-\u044b\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>1110xxxx 10xxxxxx 10xxxxxx 10xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 5-\u044b\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td><code>11111xxx<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"4\">\u0412\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b Unicode<\/td>\n<td rowspan=\"2\">U+110000..U+13FFFF<\/td>\n<td><code>11110100 1001xxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>11110100 101xxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\">\u2265 U+140000<\/td>\n<td><code>11110101<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>1111011x<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"3\">\u041d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td>2-\u0431\u0430\u0439\u0442\u043d\u0430\u044f<\/td>\n<td><code>1100000x<\/code><\/td>\n<\/tr>\n<tr>\n<td>3-\u0431\u0430\u0439\u0442\u043d\u0430\u044f<\/td>\n<td><code>11100000 100xxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td>4-\u0431\u0430\u0439\u0442\u043d\u0430\u044f<\/td>\n<td><code>11110000 1000xxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">\u0421\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u044b<\/td>\n<td><code>11101101 101xxxxx<\/code><\/td>\n<\/tr>\n<\/table>\n<\/div>\n<h3><font color=\"#3AC1EF\">\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f UTF-8<\/font><\/h3>\n<p>  \u041f\u0440\u0438 \u043d\u0430\u0438\u0432\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 UTF-8 CPP \u0441\u0435\u0440\u0431\u0430 \u041d\u0435\u043c\u0430\u043d\u044c\u0438 \u0422\u0440\u0438\u0444\u0443\u043d\u043e\u0432\u0438\u0447\u0430, \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0441\u043a\u0430\u0434\u043e\u043c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0439:<\/p>\n<pre><code class=\"cpp\">const octet_difference_type length = utf8::internal::sequence_length(it);  \/\/ Get trail octets and calculate the code point utf_error err = UTF8_OK; switch (length) {     case 0:         return INVALID_LEAD;     case 1:         err = utf8::internal::get_sequence_1(it, end, cp);         break;     case 2:         err = utf8::internal::get_sequence_2(it, end, cp);     break;     case 3:         err = utf8::internal::get_sequence_3(it, end, cp);     break;     case 4:         err = utf8::internal::get_sequence_4(it, end, cp);     break; }  if (err == UTF8_OK) {     \/\/ Decoding succeeded. Now, security checks...     if (utf8::internal::is_code_point_valid(cp)) {         if (!utf8::internal::is_overlong_sequence(cp, length)){             \/\/ Passed! Return here. <\/code><\/pre>\n<p>  \u0412\u043d\u0443\u0442\u0440\u0438 <code>sequence_length()<\/code> \u0438 <code>is_overlong_sequence()<\/code> \u0442\u043e\u0436\u0435 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0434\u043b\u0438\u043d\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0415\u0441\u043b\u0438 \u0432\u043e \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e \u0447\u0435\u0440\u0435\u0434\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b, \u0442\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u0431\u0440\u043e\u0441\u0430 \u043a\u043e\u043d\u0432\u0435\u0435\u0440\u0430 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0430\u0437 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0435.<\/p>\n<p>  \u0411\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 UTF-8 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B5%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B9_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82\">\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430<\/a> \u0438\u0437 9 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439: (\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e)<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wc\/no\/z0\/wcnoz0jo-kzd_aub6r0cknhtrp8.png\"><\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430, \u0442\u043e \u043a\u043e\u0434 \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c:<\/p>\n<pre><code class=\"cpp\">uint32_t type = utf8d[byte]; *codep = (*state != UTF8_ACCEPT) ?   (byte &amp; 0x3fu) | (*codep &lt;&lt; 6) :   (0xff &gt;&gt; type) &amp; (byte); *state = utf8d[256 + *state + type]; <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0431\u0435\u0437 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u2013 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0431\u0440\u043e\u0441\u043e\u0432 \u043a\u043e\u043d\u0432\u0435\u0435\u0440\u0430 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f; \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 (\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 <code>utf8d<\/code>) \u0432\u043f\u0440\u0438\u0434\u0430\u0447\u0443 \u043a\u043e \u0447\u0442\u0435\u043d\u0438\u044e \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430.<\/p>\n<p>  \u041b\u0435\u043c\u0438\u0440 \u0438 \u041a\u0430\u0439\u0437\u0435\u0440 \u0432\u0437\u044f\u043b\u0438 \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u0430 \u044d\u0442\u043e\u0442 \u0436\u0435 \u0414\u041a\u0410, \u0438 \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0440\u0430\u0437 \u0437\u0430 \u0441\u0447\u0451\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0451\u0445 \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0439:<\/p>\n<ol>\n<li>\u0422\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0436\u0430\u0442\u044c \u0441 364 \u0431\u0430\u0439\u0442\u043e\u0432 \u0434\u043e 48, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u043d\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u0440\u0451\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 (\u043f\u043e 128 \u0431\u0438\u0442), \u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432;<\/li>\n<li>\u0411\u043b\u043e\u043a\u0438 \u043f\u043e 16 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0431\u0430\u0439\u0442\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e;<\/li>\n<li>\u0415\u0441\u043b\u0438 16-\u0431\u0430\u0439\u0442\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 ASCII-\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u2013 \u0442\u043e \u043e\u043d \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439, \u0438 \u043d\u0435\u0442 \u043d\u0443\u0436\u0434\u044b \u0432 \u0431\u043e\u043b\u0435\u0435 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435. \u042d\u0442\u043e\u0442 \u00ab\u0441\u0440\u0435\u0437 \u043f\u0443\u0442\u0438\u00bb \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u00ab\u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0445\u00bb \u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0446\u0435\u043b\u044b\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u0435\u0439, \u0432 \u0434\u0432\u0430-\u0442\u0440\u0438 \u0440\u0430\u0437\u0430; \u043d\u043e \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u0430, \u0438\u0435\u0440\u043e\u0433\u043b\u0438\u0444\u044b \u0438 \u0441\u043c\u0430\u0439\u043b\u0438\u043a\u0438 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u043d\u044b, \u044d\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043d\u0435 \u0434\u0430\u0451\u0442.<\/li>\n<\/ol>\n<p>  \u0412 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0439 \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u0445 \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e.<\/p>\n<h3><font color=\"#3AC1EF\">\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432<\/font><\/h3>\n<p>  \u041f\u0435\u0440\u0432\u043e\u0435 \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0442\u043e\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438, \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a (12 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0431\u0438\u0442\u043e\u0432 \u0438\u0437 19 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u044b\u0448\u0435) \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c 12 \u043f\u0435\u0440\u0432\u044b\u0445 \u0431\u0438\u0442\u043e\u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438:<\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td rowspan=\"2\">\u041d\u0435\u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td rowspan=\"2\">\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430<\/td>\n<td><code>11xxxxxx 0xxxxxxx<\/code><\/td>\n<td rowspan=\"2\"><code>0x02<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>11xxxxxx 11xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u041d\u0435\u043d\u0430\u0447\u0430\u0442\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 2-\u043e\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>0xxxxxxx 10xxxxxx<\/code><\/td>\n<td><code>0x01<\/code><\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" rowspan=\"3\">\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td><code>11111xxx 1000xxxx<\/code><\/td>\n<td><code>0x20<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>11111xxx 1001xxxx<\/code><\/td>\n<td rowspan=\"4\"><code>0x40<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>11111xxx 101xxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"4\">\u0412\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b Unicode<\/td>\n<td rowspan=\"2\">U+1[1235679ABDEF]xxxx<\/td>\n<td><code>111101xx 1001xxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>111101xx 101xxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\">U+1[48C]xxxx<\/td>\n<td><code>11110101 1000xxxx<\/code><\/td>\n<td rowspan=\"2\"><code>0x20<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>1111011x 1000xxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"3\">\u041d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td>2-\u0431\u0430\u0439\u0442\u043d\u0430\u044f<\/td>\n<td><code>1100000x<\/code><\/td>\n<td><code>0x04<\/code><\/td>\n<\/tr>\n<tr>\n<td>3-\u0431\u0430\u0439\u0442\u043d\u0430\u044f<\/td>\n<td><code>11100000 100xxxxx<\/code><\/td>\n<td><code>0x10<\/code><\/td>\n<\/tr>\n<tr>\n<td>4-\u0431\u0430\u0439\u0442\u043d\u0430\u044f<\/td>\n<td><code>11110000 1000xxxx<\/code><\/td>\n<td><code>0x20<\/code><\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">\u0421\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u044b<\/td>\n<td><code>11101101 101xxxxx<\/code><\/td>\n<td><code>0x08<\/code><\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>  \u041a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u043b\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0435\u043c\u0438 \u0431\u0438\u0442\u043e\u0432, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0441\u0430\u043c\u043e\u043c \u043f\u0440\u0430\u0432\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435. (\u041f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u043d\u044b\u0435 \u0431\u0438\u0442\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0438\u0445 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 \u0438 \u0438\u0445 <a href=\"https:\/\/github.com\/simdjson\/simdjson\/blob\/master\/src\/generic\/stage1\/utf8_lookup4_algorithm.h\">\u043a\u043e\u0434\u043e\u043c \u043d\u0430 GitHub<\/a>; \u0437\u0434\u0435\u0441\u044c \u0432\u0437\u044f\u0442\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438.) \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0441\u0435\u043c\u044c\u044e \u0431\u0438\u0442\u0430\u043c\u0438, \u0434\u0432\u0430 \u043f\u043e\u0434\u0441\u043b\u0443\u0447\u0430\u044f \u0432\u044b\u0445\u043e\u0434\u0430 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b Unicode \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u043b\u0441\u044f \u0441 4-\u0431\u0430\u0439\u0442\u043d\u043e\u0439 \u043d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e; \u0430 \u0441\u043b\u0443\u0447\u0430\u0439 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0431\u0438\u0442 \u043d\u0430 \u0442\u0440\u0438 \u043f\u043e\u0434\u0441\u043b\u0443\u0447\u0430\u044f \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d \u0441 \u043f\u043e\u0434\u0441\u043b\u0443\u0447\u0430\u044f\u043c\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b Unicode.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441 \u0414\u041a\u0410 \u0425\u0451\u0440\u043c\u0430\u043d\u043d\u0430 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<ol>\n<li>\u0412\u0445\u043e\u0434 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043d\u0435 \u043f\u043e \u0431\u0430\u0439\u0442\u0443, \u0430 \u043f\u043e \u0442\u0435\u0442\u0440\u0430\u0434\u0435 (\u043f\u043e\u043b\u0443\u0431\u0430\u0439\u0442\u0443);<\/li>\n<li>\u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9D%D0%B5%D0%B4%D0%B5%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B9_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82\">\u043d\u0435\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439<\/a> \u2013 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u0435\u0442\u0440\u0430\u0434\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439;<\/li>\n<li>\u0412\u043e\u0441\u0435\u043c\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u0432 \u043e\u0434\u043d\u043e, \u0437\u0430\u0442\u043e \u043e\u0434\u043d\u043e \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043e \u043d\u0430 \u0441\u0435\u043c\u044c;<\/li>\n<li>\u0422\u0440\u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0442\u0435\u0442\u0440\u0430\u0434\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0442\u0440\u0451\u0445 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439.<\/li>\n<\/ol>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c, \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0451\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043f\u043e 16 \u0431\u0430\u0439\u0442: \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0449\u0435\u0435 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0422\u0440\u0438 \u0442\u0430\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e AND, \u0438 \u0435\u0441\u043b\u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u0435 \u0431\u0438\u0442\u044b, \u0437\u043d\u0430\u0447\u0438\u0442, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<th>\u0422\u0435\u0442\u0440\u0430\u0434\u0430<\/th>\n<th>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/th>\n<th>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438<\/th>\n<th>\u041a\u043e\u0434<\/th>\n<\/tr>\n<tr>\n<td rowspan=\"6\">\u0421\u0442\u0430\u0440\u0448\u0430\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0431\u0430\u0439\u0442\u0435<\/td>\n<td>0\u20137<\/td>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 2-\u043e\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>0x01<\/code><\/td>\n<\/tr>\n<tr>\n<td>8\u201311<\/td>\n<td>(\u043d\u0435\u0442)<\/td>\n<td><code>0x00<\/code><\/td>\n<\/tr>\n<tr>\n<td>12<\/td>\n<td>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430; 2-\u0431\u0430\u0439\u0442\u043d\u0430\u044f \u043d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td><code>0x06<\/code><\/td>\n<\/tr>\n<tr>\n<td>13<\/td>\n<td>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430<\/td>\n<td><code>0x02<\/code><\/td>\n<\/tr>\n<tr>\n<td>14<\/td>\n<td>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430; 2-\u0431\u0430\u0439\u0442\u043d\u0430\u044f \u043d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c; \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u044b<\/td>\n<td><code>0x0E<\/code><\/td>\n<\/tr>\n<tr>\n<td>15<\/td>\n<td>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c; \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b Unicode; 4-\u0431\u0430\u0439\u0442\u043d\u0430\u044f \u043d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td><code>0x62<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"7\">\u041c\u043b\u0430\u0434\u0448\u0430\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0431\u0430\u0439\u0442\u0435<\/td>\n<td>0<\/td>\n<td>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430; \u043b\u0438\u0448\u043d\u0438\u0439 2-\u043e\u0439 \u0431\u0430\u0439\u0442; \u043d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td><code>0x37<\/code><\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430; \u043b\u0438\u0448\u043d\u0438\u0439 2-\u043e\u0439 \u0431\u0430\u0439\u0442; 2-\u0431\u0430\u0439\u0442\u043d\u0430\u044f \u043d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td><code>0x07<\/code><\/td>\n<\/tr>\n<tr>\n<td>2\u20133<\/td>\n<td>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430; \u043b\u0438\u0448\u043d\u0438\u0439 2-\u043e\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>0x03<\/code><\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td rowspan=\"2\">\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430; \u043b\u0438\u0448\u043d\u0438\u0439 2-\u043e\u0439 \u0431\u0430\u0439\u0442; \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b Unicode<\/td>\n<td><code>0x43<\/code><\/td>\n<\/tr>\n<tr>\n<td>5\u20137<\/td>\n<td rowspan=\"2\"><code>0x63<\/code><\/td>\n<\/tr>\n<tr>\n<td>8\u201310, 12\u201315<\/td>\n<td>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430; \u043b\u0438\u0448\u043d\u0438\u0439 2-\u043e\u0439 \u0431\u0430\u0439\u0442; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<\/tr>\n<tr>\n<td>11<\/td>\n<td>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430; \u043b\u0438\u0448\u043d\u0438\u0439 2-\u043e\u0439 \u0431\u0430\u0439\u0442; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c; \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u044b<\/td>\n<td><code>0x6B<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"4\">\u0421\u0442\u0430\u0440\u0448\u0430\u044f \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0431\u0430\u0439\u0442\u0435<\/td>\n<td>0\u20137, 12\u201315<\/td>\n<td>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 2-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c; 2-\u0431\u0430\u0439\u0442\u043d\u0430\u044f \u043d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td><code>0x06<\/code><\/td>\n<\/tr>\n<tr>\n<td>8<\/td>\n<td rowspan=\"2\">\u041b\u0438\u0448\u043d\u0438\u0439 2-\u043e\u0439 \u0431\u0430\u0439\u0442; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c; \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b Unicode; \u043d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td><code>0x35<\/code><\/td>\n<\/tr>\n<tr>\n<td>9<\/td>\n<td><code>0x55<\/code><\/td>\n<\/tr>\n<tr>\n<td>10\u201311<\/td>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 2-\u043e\u0439 \u0431\u0430\u0439\u0442; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c; \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b Unicode; 2-\u0431\u0430\u0439\u0442\u043d\u0430\u044f \u043d\u0435\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c; \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u044b<\/td>\n<td><code>0x4D<\/code><\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>  \u041e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u0435\u0449\u0451 7 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0431\u0438\u0442\u043e\u0432:<\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td rowspan=\"4\">\u041d\u0435\u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td rowspan=\"2\">\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 3-\u0435\u0433\u043e \u0431\u0430\u0439\u0442\u0430<\/td>\n<td><code>111xxxxx 10xxxxxx 0xxxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>111xxxxx 10xxxxxx 11xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\">\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 4-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430<\/td>\n<td><code>1111xxxx 10xxxxxx 10xxxxxx 0xxxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>1111xxxx 10xxxxxx 10xxxxxx 11xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"3\">\u041d\u0435\u043d\u0430\u0447\u0430\u0442\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/td>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 3-\u0438\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>110xxxxx 10xxxxxx 10xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 4-\u044b\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>1110xxxx 10xxxxxx 10xxxxxx 10xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 5-\u044b\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx<\/code><\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>  \u0418 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0433\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0438\u0442, \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c: \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0431\u0438\u0442\u043e\u0432 <code>10xxxxxx 10xxxxxx<\/code>, \u0442.\u0435. \u0434\u0432\u0443\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0449\u0438\u043c \u0431\u0430\u0439\u0442\u0430\u043c \u043f\u043e\u0434\u0440\u044f\u0434. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0440\u0451\u0445 \u0442\u0435\u0442\u0440\u0430\u0434 \u043c\u043e\u0436\u0435\u0442 \u043b\u0438\u0431\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u043b\u0438\u0431\u043e \u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <code>0x00<\/code> \u0438\u043b\u0438 <code>0x80<\/code>. \u0418 \u0432\u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u2013 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u0435\u0442\u0440\u0430\u0434\u043e\u0439 \u2013 \u043d\u0430\u043c \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e:<\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td rowspan=\"2\">\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 3-\u0435\u0433\u043e \u0431\u0430\u0439\u0442\u0430<\/td>\n<td><code>111xxxxx 10xxxxxx 0xxxxxxx<\/code><\/td>\n<td rowspan=\"2\"><code><nobr>111xxxxx (0x00)<\/nobr><\/code><\/td>\n<\/tr>\n<tr>\n<td><code>111xxxxx 10xxxxxx 11xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\">\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0451\u0442 4-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430<\/td>\n<td><code>1111xxxx 10xxxxxx 10xxxxxx 0xxxxxxx<\/code><\/td>\n<td rowspan=\"2\"><code><nobr>1111xxxx (x) (0x00)<\/nobr><\/code><\/td>\n<\/tr>\n<tr>\n<td><code>1111xxxx 10xxxxxx 10xxxxxx 11xxxxxx<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 3-\u0438\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>110xxxxx 10xxxxxx 10xxxxxx<\/code><\/td>\n<td><code><nobr>110xxxxx (0x80)<\/nobr><\/code><\/td>\n<\/tr>\n<tr>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 4-\u044b\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>1110xxxx 10xxxxxx 10xxxxxx 10xxxxxx<\/code><\/td>\n<td><code><nobr>1110xxxx (x) (0x80)<\/nobr><\/code><\/td>\n<\/tr>\n<tr>\n<td>\u041b\u0438\u0448\u043d\u0438\u0439 5-\u044b\u0439 \u0431\u0430\u0439\u0442<\/td>\n<td><code>10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx<\/code><\/td>\n<td><code><nobr>10xxxxxx (x) (0x80)<\/nobr><\/code><\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" rowspan=\"2\">\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438<\/td>\n<td><code><nobr>111xxxxx (0x80)<\/nobr><\/code><\/td>\n<\/tr>\n<tr>\n<td><code><nobr>1111xxxx (x) (0x80)<\/nobr><\/code><\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>  \u0417\u043d\u0430\u0447\u0438\u0442, \u0434\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <code>0x80<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0439.<\/p>\n<h3><font color=\"#3AC1EF\">\u0412\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/font><\/h3>\n<p>  \u041a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438 \u043f\u043e 16 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0431\u0430\u0439\u0442\u043e\u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e? \u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <code>pshufb<\/code> \u043a\u0430\u043a 16 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u043a \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 16-\u0431\u0430\u0439\u0442\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439. \u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0431\u043b\u043e\u043a\u0435 \u0432\u0441\u0435 \u0431\u0430\u0439\u0442\u044b \u0432\u0438\u0434\u0430 <code>111xxxxx<\/code> \u0438 <code>1111xxxx<\/code>; \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430 Intel \u043d\u0435\u0442 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0442\u043e \u043e\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435\u043c \u0441 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u0438\u0435\u043c (<code>psubusb<\/code>).<\/p>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 simdjson \u0442\u044f\u0436\u0435\u043b\u043e\u0432\u0430\u0442\u043e \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0440\u0430\u0437\u0431\u0438\u0442 \u043d\u0430 \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434 \u0432\u0441\u0435\u0433\u043e \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"python\">prev = vector(0) while !input_exhausted:     input = vector(...)     prev1 = prev&lt;&lt;120 | input&gt;&gt;8     prev2 = prev&lt;&lt;112 | input&gt;&gt;16     prev3 = prev&lt;&lt;104 | input&gt;&gt;24      # \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430     nibble1 = prev1.shr(4).lookup(table1)     nibble2 = prev1.and(15).lookup(table2)     nibble3 = input.shr(4).lookup(table3)     result1 = nibble1 &amp; nibble2 &amp; nibble3      # \u0432\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430     test1 = prev2.saturating_sub(0xDF) # 111xxxxx =&gt; &gt;0     test2 = prev3.saturating_sub(0xEF) # 1111xxxx =&gt; &gt;0     result2 = (test1 | test2).gt(0) &amp; vector(0x80)      # \u0432 result1 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c 0x80 \u043d\u0430 \u0442\u0435\u0445 \u0436\u0435 \u043c\u0435\u0441\u0442\u0430\u0445, \u043a\u0430\u043a \u0438 \u0432 result2,     # \u0438 \u043d\u0443\u043b\u0438 \u043d\u0430 \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445     if result1 != result2:         return false      prev = input  return true <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0443 \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u043a\u0440\u0430\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0431\u043b\u043e\u043a\u0430, \u0442\u043e \u043e\u043d\u0430 \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0443\u043b\u0435\u0432\u044b\u043c\u0438 \u0431\u0430\u0439\u0442\u0430\u043c\u0438 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043e\u0434\u0438\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u043b\u043e\u043a. \u0412 simdjson \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u043e\u0431\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0431\u0430\u0439\u0442\u043e\u0432: \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0431\u0430\u0439\u0442 \u0431\u044b\u043b \u0441\u0442\u0440\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435 <code>0xC0<\/code>, \u043f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u2013 \u0441\u0442\u0440\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435 <code>0xE0<\/code>, \u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u0441 \u043a\u043e\u043d\u0446\u0430 \u2013 \u0441\u0442\u0440\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435 <code>0xF0<\/code>.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437 \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0439, \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0445 \u041b\u0435\u043c\u0438\u0440\u043e\u043c \u0438 \u041a\u0430\u0439\u0437\u0435\u0440\u043e\u043c \u2013 \u044d\u0442\u043e \u00ab\u0441\u0440\u0435\u0437 \u043f\u0443\u0442\u0438\u00bb \u0434\u043b\u044f ASCII. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0431\u043b\u043e\u043a\u0435 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e ASCII-\u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e: <code>input &amp; vector(0x80) == vector(0)<\/code>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043d\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435 <code>prev<\/code> \u0438 <code>input<\/code>, \u2013 \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0431\u043b\u043e\u043a\u0443. \u042d\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438; \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 <code>[..., 0x\u04210, 0xE0, 0xC0]<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442 \u043d\u0430 Intel, \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0430 (<code>pmaxub<\/code>) \u0438 \u0435\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u043c \u0436\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c.<\/p>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 ASCII \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u0430, \u0438 \u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u043e \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435 \u0447\u0435\u0440\u0435\u0434\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0431\u043b\u043e\u043a\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438\u0437 ASCII \u0441\u043e \u0431\u043b\u043e\u043a\u0430\u043c\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c\u0438 \u043d\u0435-ASCII-\u0441\u0438\u043c\u0432\u043e\u043b\u044b. \u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438, \u0447\u0442\u043e \u0435\u0449\u0451 \u043b\u0443\u0447\u0448\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0430\u0445 \u0443\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u043d\u0430 ASCII \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u043e OR \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432, \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044f \u0432\u0441\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u043b\u043e\u043a\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 ASCII. \u0418 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e: \u043c\u043e\u0436\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0430\u0432\u0442\u043e\u0440 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435-ASCII-\u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438, \u0442\u043e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0440\u0430\u0437 \u043d\u0430 64 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0447\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430.<\/p>\n<p>  <a href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=yotmich&amp;utm_content=validation-utf8#order\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ou\/g5\/kh\/oug5kh6sjydt9llengsiebnp40w.png\"><\/a><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/551060\/\"> https:\/\/habr.com\/ru\/company\/ruvds\/blog\/551060\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rs\/o4\/jn\/rso4jnwkfv2sqg11qjacnhhifqq.png\"><\/p>\n<p>  \u0414\u0430\u043d\u0438\u044d\u043b\u044c \u041b\u0435\u043c\u0438\u0440 \u2013 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u043e\u0440 \u0417\u0430\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u0432\u0435\u0431\u0435\u043a\u0441\u043a\u043e\u0433\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0430 (T\u00c9LUQ), \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0432\u0448\u0438\u0439 <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/542640\/\">\u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u044c double<\/a> \u2013 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0414\u0436\u043e\u043d\u043e\u043c \u041a\u0430\u0439\u0437\u0435\u0440\u043e\u043c \u0438\u0437 Microsoft <a href=\"https:\/\/arxiv.org\/pdf\/2010.03090.pdf\">\u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438<\/a> \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0441\u0432\u043e\u044e \u043d\u0430\u0445\u043e\u0434\u043a\u0443: \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440 UTF-8, \u043e\u0431\u0433\u043e\u043d\u044f\u044e\u0449\u0438\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"http:\/\/utfcpp.sourceforge.net\/\">UTF-8 CPP<\/a> (2006) \u0432 48..77 \u0440\u0430\u0437, <a href=\"http:\/\/bjoern.hoehrmann.de\/utf-8\/decoder\/dfa\/\">\u0414\u041a\u0410 \u043e\u0442 \u0411\u044c\u0451\u0440\u043d\u0430 \u0425\u0451\u0440\u043c\u0430\u043d\u043d\u0430<\/a> (2009) \u2013 \u0432 20..45 \u0440\u0430\u0437, \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Google_Fuchsia\">Google Fuchsia<\/a> (2020) \u2013 \u0432 13..35 \u0440\u0430\u0437. \u041d\u043e\u0432\u043e\u0441\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/524426\/\">\u0443\u0436\u0435 \u043f\u043e\u0441\u0442\u0438\u043b\u0438<\/a>, \u043d\u043e \u0431\u0435\u0437 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439; \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u043d\u0435\u0434\u043e\u0447\u0451\u0442.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-320967","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/320967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=320967"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/320967\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=320967"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=320967"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=320967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}