Comments 51
Было бы интересно причину узнать, что именно там происходит
Самая «совершенная» кодировка, говорили они.
Можно пару ссылочек? Никак не найду похожих статей.
Достаточно понятно объяснено.
Комментарий с объяснением взят отсюда: tools.ietf.org/html/rfc3629
utf8 это не кодировка а один из "контейнеров" для кодировки юникод. Чтобы в utf8 накосячить нужно уж очень постараться.
Очень даже легко накосячить. Стоит только выйти за значения байта > 127 и тут начинается магия не правильных последовательностей байт. А какой сюрприз мне сделали суррогатные пары в нём которые превращают два кодпойнта в один. А потом оказывается что его ещё и ограничили из за utf16 в котором как раз и используются эти соррогатные пары.
Они есть в Unicode (диапазон 0xD800 — 0xDBFF) и как следствие могут быть во всех контейнерах.
D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
В Юникоде эти символы просто зарезервированы и не несут особого смысла.
Notepad++
- HEX в UTF-8 (EDA0B4EDB480)
- Копируем полученную строку
- UTF-8 в HEX (F09D8480)
Мне этот символ аж комментарий порезал ))
HEX-ASCII, ASCII-HEX это оно. Надо это делать в режиме UTF-8.
Может уже поправили. У меня он старый. У меня всё старое ибо XP 64.
Вообще, это классический случай неожиданного поведения в случае некорректных данных.
Этот поток байт не является корректным UTF-8 потоком, и с ним нельзя делать то, что оптимистично сделал N++. У меня он работает почти так же, только показывает один квадратик вместо двух.
На всякий случай декодировал поток вручную, чтобы не зависеть от багов какого-либо перекодировщика.
В общем, олдскульным программистам, видевшим DOS 3.x и однобайтные кодировки, придётся запомнить, что в нынешнем мире массив байт — это одно, а строка символов — совсем другое. Такова нынешняя реальность.
Я недавно в Qt репортил похожий баг — цветной эмоджи на кнопке вызывал рандомный segfault. Если интересно, могу поискать, мне кажется плюс минус похожая проблема.
Исправление было сделано в: https://bugreports.qt.io/browse/QTBUG-64239
Emogi что ли используют в сообщении таком.
Язык этот знакомым кажется мне.
Это Вы ещё не знаете о "залипании" бит (не данных) при некоторых последовательностях на печатных машинках. И переход в командный режим модема при наличии "+++" в сжатых данных…
И многое, многое иное.
Если не ошибаюсь, то несколько лет назад у apple была схожая бага, окирпичивающая аппарат.
А что бы определить возможные варианты («как надо»), требуется время.
А когда все заработает то в некоторых играх новый ник может не работать. Ну вы…
Такой вот производитель.
А когда все заработает то в некоторых играх новый ник может не работать.
А как вы себе это представляете? Они все игры должны поправить?
Изменился API. Нужно переписать код, который с ним работает.
Уязвимость в PlayStation 4 — набор символов в сообщении для пользователя удаленно превращает приставку в почти «кирпич»