LINUX.ORG.RU

Проиндексировать и искать (xapian, namazu, всякие beagle)

anonymous
()

Для KOI8-R локали:
for locales in "CP1251 UTF8 866 foo bar"; do
  egrep -R . -i "`echo search string | iconv -f $locales -tKOI8-R`"
done
Что-то типа такого.

Deleted
()
Ответ на: комментарий от Deleted

-for locales in "CP1251 UTF8 866 foo bar"; do
+for locales in CP1251 UTF8 866 foo bar; do

Deleted
()

python-chardet

Description: universal character encoding detector
 Chardet takes a sequence of bytes in an unknown character encoding, and
 attempts to determine the encoding.
 .
 Supported encodings:
  * ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
  * Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified
    Chinese)
  * EUC-JP, SHIFT_JIS, ISO-2022-JP (Japanese)
  * EUC-KR, ISO-2022-KR (Korean)
  * KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
  * ISO-8859-2, windows-1250 (Hungarian)
  * ISO-8859-5, windows-1251 (Bulgarian)
  * windows-1252 (English)
  * ISO-8859-7, windows-1253 (Greek)
  * ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
  * TIS-620 (Thai)
 .
 This library is a port of the auto-detection code in Mozilla.
 .
  Homepage: http://chardet.feedparser.org/



Определяешь кодировку, конвертируешь файл или поисковую строку к 
общему знаменателю и ищешь.

sdio ★★★★★
()

Спасибо всем ответившим, но возникла пара новых вопросов.

Текст индексируется с учетом его кодировки и потом не возникнет проблем, если индексируемый текст был в разных кодировках?

Как пользоваться python-chardet?

Вариант с перебором локалей проще всего сделать, но есть ли способ быстрее и покрасивее, чтобы внутри grep проверять подстроку для поиска в разных кодировках, а не грепать несколько раз подряд?

anonymous
()
Ответ на: комментарий от anonymous

str="string"
str_win=`echo $str|iconv -fKOI8-R -tCP1251`
str_uni=`echo $str|iconv -fKOI8-R -tUTF8`
str_dos=`echo $str|iconv -fKOI8-R -t866`
...
egrep '$str|$str_win|$str_uni|$str_dos|...' -R -i .
:)

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.