New user registration is currently disabled due to spam abuse / Регистрация новых пользователей в настоящее время приостановлена из-за злоупотреблений спаммерами

Особенность с альтернативными пробелами

Сообщаем о найденных ошибках сюда

Особенность с альтернативными пробелами

Postby Novikov » Tue Feb 07, 2012 6:51 pm

Обнаружил особенность, связанную с индексированием словарей, в коде которых встречаются альтернативные пробелы.

Например, если в коде словаря есть пробел с HEX-кодом A0 (неразрывный пробел) -- то словарь не появится в списке подключенных.

Чуть позже потестирую с другими символами.
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Re: Особенность с альтернативными пробелами

Postby ikm » Tue Feb 07, 2012 8:24 pm

В коде словаря - это как?
ikm
Автор GoldenDict
 
Posts: 1592
Joined: Wed Feb 04, 2009 10:40 am

Re: Особенность с альтернативными пробелами

Postby Novikov » Tue Feb 07, 2012 8:42 pm

"В коде" -- синоним "в тексте", просто по аналогии с HTML-кодом, размеченный DSL-тегами словарь я тоже считаю за "код".
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Re: Особенность с альтернативными пробелами

Postby ikm » Tue Feb 07, 2012 8:50 pm

Существует только два символа, использующихся для выделения тел карточек - это пробел обыкновенный (0x20) и таб обыкновенный (0x9). Другие символы воспринимаются как часть заголовка. Это фича пришла из Лингвы.
ikm
Автор GoldenDict
 
Posts: 1592
Joined: Wed Feb 04, 2009 10:40 am

Re: Особенность с альтернативными пробелами

Postby Novikov » Tue Feb 07, 2012 9:05 pm

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

Я это обнаружил, когда пытался подключить конвертированный из Stardict словарь, там были такие символы в количестве нескольких штук.
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Re: Особенность с альтернативными пробелами

Postby Abs62 » Tue Feb 07, 2012 9:14 pm

Хм. Взял маленький dsl, понатыкал в разные места неразрывных пробелов (A0) - подключился и работает.
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Re: Особенность с альтернативными пробелами

Postby Novikov » Tue Feb 07, 2012 9:19 pm

Прилагаю ZIP со словарем. Там A0 воткнут перед словами "good food". Стоит его удалить -- и словарь подключается.

GD 1.0.1.-210-gfb179ac, брал уже собранный с "гитхаба", ОС Win7 Pro 64-bit.
Attachments
OALD_test2.zip
DSL, не подключающийся из-за символа с кодом A0
(8.48 KiB) Downloaded 1352 times
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Re: Особенность с альтернативными пробелами

Postby Abs62 » Tue Feb 07, 2012 9:33 pm

Это не неразрывный пробел. Там стоит просто байт 0xA0, а неразрывный пробел в UTF8 - это двухбайтовое слово, 0xA0C2.
А просто 0xA0 - это недопустимый символ в UTF-8, ЕМНИМС.
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Re: Особенность с альтернативными пробелами

Postby Novikov » Tue Feb 07, 2012 9:52 pm

Abs62 wrote:Это не неразрывный пробел. Там стоит просто байт 0xA0, а неразрывный пробел в UTF8 - это двухбайтовое слово, 0xA0C2.

Abs62 wrote:Хм. Взял маленький dsl, понатыкал в разные места неразрывных пробелов (A0) - подключился и работает.


Чего-то я уже к ночи перестаю понимать :) Вы же написали, что понатыкали A0. Получается, тыкали именно 0xA0C2?
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Re: Особенность с альтернативными пробелами

Postby Abs62 » Tue Feb 07, 2012 9:58 pm

Да я-то тыкал в родном UTF-16LE, а там просто к A0 нулевой байт добавляется. 0x00A0 = 0xA0 с точки зрения математики. ;)
Last edited by Abs62 on Tue Feb 07, 2012 10:01 pm, edited 1 time in total.
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Next

Return to Ошибки

Who is online

Users browsing this forum: No registered users and 2 guests