Определить завершение UTF-16 строки. (парсинг PDF)
От: maloi_alex СССР  
Дата: 28.08.10 16:00
Оценка:
Не знал в какой форум написать. Использую C#, поэтому написал сюда.

Мне нужно правильно распарсить символьные блоки в PDF документе. Такие блоки могут содержать в том числе и текст в кодировке UTF-16, который сохраняется в виде массива байт.

Обычно такой блок выглядит таким образом:
1. Сначала идет символ открывающей скобки "(".
2. Затем идет сигнатура UTF-16 0xFE 0xFF.
3. Дальше идет сам текст в виде массива двух-байтных символов.
4. Дальше может могут идти любые однобайтные символы.
5. Закрывается блок символом ")"

К примеру, пусть есть строка "qwertyАБВГД123".

В PDF она хранится таким вот образом:


Начала строки я определяю по сигнатуре 0xFE 0xFF. Затем начинаю выбирать массив байт.
Тут возник вопрос: как корректно определить позицию где кончается массив двух-байтных символов, и начинаются однобайтные.
Первое что пришло в голову, определять является ли символ двух-байтный по первому нулевому байту.

Корректен ли такой подход, или здесь есть еще какие-то тонкости которых я не знаю?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.