UTF-8 строковый разделитель - PullRequest
3 голосов
/ 01 мая 2011

Я анализирую двоичный протокол, в котором строки UTF-8 разбросаны среди необработанных байтов. Этот конкретный протокол предшествует каждой строке UTF-8 коротким (два байта), указывающим длину следующей строки UTF-8. Это дает максимальную длину строки 2 ^ 16> 65 000, что более чем достаточно для конкретного приложения.

У меня вопрос, это стандартный способ разграничения строк UTF-8?

Ответы [ 3 ]

2 голосов
/ 01 мая 2011

Я бы не назвал это разделением, больше похоже на «префикс длины».Некоторые люди называют их Строки Pascal , так как в первые дни язык Pascal был одним из самых популярных, который хранил строки таким образом в памяти.

Я не думаю, что есть формальный стандарт специальнодля этого, поскольку это довольно очевидный способ хранения строк UTF-8 (или любых строк байтов в этом отношении).Однако он снова и снова определяется как часть многих стандартов, касающихся сообщений, содержащих строки.

0 голосов
/ 18 декабря 2012

я бы использовал разделитель, который начинается с 0x11 ...... но если вы отправляете необработанные байты, вам придется исключить этот разделитель из обработанных данных \ сообщений, это означает, что если пользовательский ввод похож на этот разделитель, вам придется преобразовать его.

если пользователь вводит любой представленный символ utf8, вы можете просто отправить его как есть.

0 голосов
/ 01 мая 2011

UTF8 обычно не ограничен, вы должны быть в состоянии обнаружить там многобайтовые символы, используя правила, упомянутые здесь: http://en.wikipedia.org/wiki/UTF-8#Description

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