Блять, двач, вообще нихуя не понимаю, выручай!Допустим, есть у меня двоичная последовательность: 11010001 10000010, это D182 в hex, соответственно пара символов в utf-8 с hex кодом d1 и 82, а теперь смотри пикрилейтед, почему бляцкий hex в utf-16 другой, при том же двоичном коде, что за хуйня, анон, уже второй час гуглю, нихуя не могу понять. Полыхает.
И сразу тактический бамп
Еще бамп
Бампецкий
Анон, выручай
Я мог бы еще понять, если бы не совпадали только первые 2 цифры в hex, мол, первые 8 бит считываются по другому, но вторые 8 бит-то тут при чем?
Бамп!
Зачем тебе?
>>163332512Случайно обнаружил, не могу понять, и теперь пердак горит от того, что не понимаю.
>>163331164 (OP)Потому что utf-8 и utf-16 разные кодировки на одном наборе символов. У utf-8 число байтов на символ динамическое, а у utf-16 всегда 2 байта или 2 группы по 2 байта, если символ большой.
>>163332696Хз, антош.Из вики утф16:>Символы Unicode до 0xFFFF включительно (исключая диапазон для суррогатов) записываются как есть 16-битным словом.>диапазон 0xD800..0xDFFF используется как раз для кодирования так называемых суррогатных пар — символов, которые кодируются двумя 16-битными словами.Но твой символ (0хD182) не является суррогатным, а значит должен быть как есть.
>>163334569Именно, поэтому я и не понимаю нихуя_, почему они не совпадают.
https://ru.m.wikipedia.org/wiki/UTF-8Почитай принцип кодированияНомер т в юникоде -- 0х0442 и в utf-16 он так и пишетсяВ утф-8 просто хитрожопо кодируется все, так что байты не должны совпадать
ОП, ты тут?
>>163335248Я и не сомневаюсь, что он так и пишется, но тут точно не в утф8 проблема, статьи на вики я в первую очередь все прочитал.Вопрос в том, что хекс утф8 совпадает с простым переводом из двоичного в хекс, а у утф16 не совпадает.>>163335982Да, пока отвлекся ненадолго
>>163338170Я не понял, в чем вопрос. У тебя номер символа -- 0442 в шестнадцатеричной (00000100 01000010 в двоичной). В utf-16 он так и пишется двумя байтами -- 0x04 и 0x42. В utf-8 символы кодируются нетривиальным образом, так что там и получается 11010001 10000010 (в соответствии со схемой из википедии), то есть те самые два байта -- 0xD1 и 0x82.
>>163340299Все наоборот, у меня есть бинарная последовательность 11010001 10000010, в хекс - d182, это бинарный код для буквы "т", в утф8 - это пара d1 82, а в утф16 - это 04 42, при том же самом бинарном коде.ю вот я и не понимаю нихуя
>>163340651>11010001 10000010, в хекс - d182, это бинарный код для буквы "т", Ошибка здесь>Номер т в юникоде -- 0х0442
>>163340842А, тогда понятно, это не хекс представление в утф16, а лишь номер буквы,спасибо, анон
>>163341207Ну впрочем они совпадают.