Как преобразовать UTF-8 byteOffset в charOffset для Строки Java?

Если Вы вносите существенные изменения и обеспокоены влиянием на других, работающих над кодом, можно создать новое ответвление, и затем объединиться назад в соединительную линию после того, как изменения завершены.

5
задан Daniel Lucraft 8 December 2009 в 11:33
поделиться

2 ответа

Будьте очень осторожны с вашей терминологией, иначе вы запутаетесь. Не существует такого понятия, как «смещение байта в строке Java». Строки Java состоят из 16-битных символов.

Итак, я предполагаю, что у вас есть массив байтов и смещение, и вы хотите преобразовать их в строку Java, сохранив при этом местоположения (чтобы вы могли отображать туда и обратно).

Это зависит от кодировки байтового массива. Если это UTF-8, то любой байт, для которого установлен MSB, является частью последовательности кодирования. Найдите байт, который byte & 0xc0 == 0xc0 . Это начало последовательности кодирования (см. Статью Википедии ).

Если вы спрашиваете о символах, то кодировка - UTF-16, и вам нужно искать суррогатные пары .

3
ответ дан 15 December 2019 в 01:03
поделиться

Я бы посоветовал вам не использовать байтовое смещение в стандартной строке Java. Если да, то можете ли вы сказать нам, кто у вас его (укажите код)

1
ответ дан 15 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: