Количество байтов в символе Unicode всегда 1-4, или это может быть другая длина? - PullRequest
0 голосов
/ 17 января 2020

Таким образом, я столкнулся с проблемой, когда кто-то кодировал некоторый текст в Unicode, но добавил число в конце каждого символа Unicode, чтобы сделать сообщение более безопасным. Проблема в том, что когда я пытаюсь его декодировать, я не могу понять, какое число мне нужно удалить, потому что длина каждого символа Юникода может варьироваться по длине.

Кто-нибудь знает, какова наиболее распространенная длина символа Юникод? Пожалуйста, постарайтесь ответить как можно проще, потому что я не привык использовать Unicode в шифровании.

1 Ответ

4 голосов
/ 18 января 2020

Если ваш Unicode имеет размер от 1 до 4 байтов, то я предполагаю, что вы используете кодировку UTF-8; это, безусловно, обычное явление.

Кодовые точки UTF-8 могут иметь длину 1, 2, 3 или 4 байта, с различными шаблонами для байтов, которые помогут вам их распознать.

  • 1 байт: 0xxxxxxx
  • 2 байт: 110xxxxx 10xxxxxx
  • 3 байт: 1110xxxx 10xxxxxx 10xxxxxx
  • 4 байт: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

ведущий биты каждого байта говорят вам, что это, будь то начальный или следующий байт. Старшие байты также сообщают вам, сколько следует ожидать следующих байтов.

Поэтому, если вы найдете байт: 11010110, вы знаете, что он является старшим байтом двухбайтовой кодовой точки. Вы ожидаете увидеть один следующий байт: 10xxxxxx после него, за которым следует начальный байт следующей кодовой точки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...