Page 1 of 3
Особенность с альтернативными пробелами
Posted:
Tue Feb 07, 2012 6:51 pm
by Novikov
Обнаружил особенность, связанную с индексированием словарей, в коде которых встречаются альтернативные пробелы.
Например, если в коде словаря есть пробел с HEX-кодом A0 (неразрывный пробел) -- то словарь не появится в списке подключенных.
Чуть позже потестирую с другими символами.
Re: Особенность с альтернативными пробелами
Posted:
Tue Feb 07, 2012 8:24 pm
by ikm
В коде словаря - это как?
Re: Особенность с альтернативными пробелами
Posted:
Tue Feb 07, 2012 8:42 pm
by Novikov
"В коде" -- синоним "в тексте", просто по аналогии с HTML-кодом, размеченный DSL-тегами словарь я тоже считаю за "код".
Re: Особенность с альтернативными пробелами
Posted:
Tue Feb 07, 2012 8:50 pm
by ikm
Существует только два символа, использующихся для выделения тел карточек - это пробел обыкновенный (0x20) и таб обыкновенный (0x9). Другие символы воспринимаются как часть заголовка. Это фича пришла из Лингвы.
Re: Особенность с альтернативными пробелами
Posted:
Tue Feb 07, 2012 9:05 pm
by Novikov
Так в чем штука-то -- я именно в заголовок карточки помещаю символ неразрывного пробела с кодом A0 -- и словарь перестает подключаться. Причем сейчас специально потестировал -- что в начало заголовка, что в середину, что в карточку -- словарь не подключается.
Я это обнаружил, когда пытался подключить конвертированный из Stardict словарь, там были такие символы в количестве нескольких штук.
Re: Особенность с альтернативными пробелами
Posted:
Tue Feb 07, 2012 9:14 pm
by Abs62
Хм. Взял маленький dsl, понатыкал в разные места неразрывных пробелов (A0) - подключился и работает.
Re: Особенность с альтернативными пробелами
Posted:
Tue Feb 07, 2012 9:19 pm
by Novikov
Прилагаю ZIP со словарем. Там A0 воткнут перед словами "good food". Стоит его удалить -- и словарь подключается.
GD 1.0.1.-210-gfb179ac, брал уже собранный с "гитхаба", ОС Win7 Pro 64-bit.
Re: Особенность с альтернативными пробелами
Posted:
Tue Feb 07, 2012 9:33 pm
by Abs62
Это не неразрывный пробел. Там стоит просто байт 0xA0, а неразрывный пробел в UTF8 - это двухбайтовое слово, 0xA0C2.
А просто 0xA0 - это недопустимый символ в UTF-8, ЕМНИМС.
Re: Особенность с альтернативными пробелами
Posted:
Tue Feb 07, 2012 9:52 pm
by Novikov
Abs62 wrote:Это не неразрывный пробел. Там стоит просто байт 0xA0, а неразрывный пробел в UTF8 - это двухбайтовое слово, 0xA0C2.
Abs62 wrote:Хм. Взял маленький dsl, понатыкал в разные места неразрывных пробелов (A0) - подключился и работает.
Чего-то я уже к ночи перестаю понимать
Вы же написали, что понатыкали A0. Получается, тыкали именно 0xA0C2?
Re: Особенность с альтернативными пробелами
Posted:
Tue Feb 07, 2012 9:58 pm
by Abs62
Да я-то тыкал в родном UTF-16LE, а там просто к A0 нулевой байт добавляется. 0x00A0 = 0xA0 с точки зрения математики.