По умолчанию определение кодировки текста (кодовой страницы) основано на следующем алгоритме.
Во-первых, если файл имеет тэги для указания
кодировки (обязательно для XML, опционально для
HTML), то она используется безусловно.
Во-вторых, некоторые текстовые файлы содержат BOM
- несколько начальных байтов с предопределенными величинами,
позволяющими распознать кодировки utf-8, utf-16 и др. для простых
текстовый файлов.
Во-третьих, если файл не содержит служебной информации о кодировке текста, то включается специальный блок - CodePage Guesser, подбирающий наиболее подходящую кодировку. Во избежание неприятных сюрпризов пожалуйста обратите внимание, что автоматическое распознавание кодировки работает не для всех языков - см. возможности текущего релиза.
Управлять вышеописанным алгоритмом можно через интерфейс поисковой системы. В окне построения области поиска есть группа полей, с помощью которых можно управлять чтением символов из текстовых файлов:

На этой вкладке есть поля, с помощью которых можно задавать принудительную кодировку для всех файлов:

Это бывает полезно в тех случаях, когда к примеру в HTML файле кодировка указана неверно (небрежность веб-дизайнеров поразительна), либо если алгоритм автоопределения кодировки ошибается.
Также можно задать кодировку, предпочитаемую в случае отсутствия сведений о кодировке (например, не все HTML файлы сформированы корректно в этом смысле, а ASCII-файлы вообще не имеют указания кодировки):

Поля выбора кодировки не применяются для файлов, которые содержат текст в Unicode-формате, например - utf-8, utf-16, и др.
Окно выбора кодировки содержит список всех поддерживаемых текущей версией поискового движка кодировок - включая синонимы:

Обратите внимание, что многие кодировки имеют большое количество синонимичных названий, и после выбора название кодировки будет приведено к некоторому базовому имени, например выбранная кодировка iso8859-1 будет заменена на cp28591.
Поддержка редкоиспользуемых кодировок требует включения в дистрибутив больших по объему модулей и поэтому включена только в старшую версию поисковой системы (см. о версиях настольной поисковой системы).
Если Вам часто приходится работать с текстами на различных языках, то встроенные в поисковую систему средства для работы с текстами в разных кодировках могут облегчить Вашу работу. Обратите внимание, что язык интерфейса программы (то есть локализация) никак не связана с возможностью искать информацию на других языках, хотя и может влиять на выбор параметров по умолчанию. См. подробнее о настройке морфологического анализатор поисковой системы.
Продемонстрируем это на таком примере. Есть каталог с некоторым количеством текстов на французском языке. Документы имеют самый разный формат - utf-8 txt, ascii txt в кодировке 8859-1, HTML, RTF, PDF. Кроме всего прочего, документы запакованы (это следствие того, что фактически они скачаны с сайта проекта www.Gutenberg.org). Выполним поиск документов, которые содержат упоминание Александра Дюма-отца (Alexandre Dumas в оригинале).
Форма для задания параметров запроса должна быть такой:

Обратите внимание на флаг "убирать диактрические знаки" - он необходим, чтобы поисковый движок правильно сопоставил слова pere в запросе и père в текстах.
В форме определения области поиска необходимо указать папку с документами выставить предпочитаемую кодировку - iso-8859-1 (стандартная для многих европейских языков). В принципе, встроенный в поисковую машину автоопределитель кодовой страницы может подбирать кодировку для французского текста, но проблема состоит в том, что тексты с сайта Gutenberg сопровождаются внушительного размера "предисловиями" с условиями использования, и эти предисловия написаны по-английски. Так как автоопределитель кодовой страницы читает только несколько первых предложений из каждого документа, он будет ошибаться на некоторых ascii-файлах. Итак, выставляем предпочитаемую кодировку:

После этого запускаем поиск и видим в результатах по крайней мере ссылки на роман "Королева Марго" (два тома):

Локаль, которая влияет на применяемый язык текстовых сообщений, устанавливается принятым в поисковом движке способом - явно через ini файл или автоматически по локали текущего сеанса. В настольной поисковой системе обычно удобнее использовать диалоговое окно конфигурирования:

Для перевода текстовых строк сообщений и интерфейса на различные языки (сейчас поддерживается только русский и английский, отчасти - французский) используется файл integra.lang в каталоге программы. Это обычный текстовый файл в формате utf-8, который можно править даже в Блокноте. Формат записей примитивен - числовой код сообщения, затем сигнатура локали (двухбуквенное обозначение языка) и текст сообщения до конца строки. Кодировка utf8 позволяет писать сообщения на любом языке, который поддержан стандартом UNICODE. После правки содержимого нужно только перезапустить поисковую систему и новый текст сообщений будет немедленно загружен.
Обсуждение некоторых внутренних аспектов работы с кодировками символов и Unicode текстом можно найти на соответствующей странице технического описания и на странице примеров поиска.
Скачать SDK поисковой системы с примерами и другие компоненты можно здесь 
© Mental Computing 2010
|
|
изменено 04-Jun-10 |