PHP и антислово неправильно анализируют кириллицу - PullRequest
1 голос
/ 02 декабря 2011

Я пытаюсь проанализировать документ MS Office 2003, используя антислово на моем сервере Linux. Но он не будет правильно анализировать кириллицу.

Возвращает что-то вроде этого:

??? ???? ???????????

Кто-нибудь знает, как правильно проанализировать документ MS Office 2003, содержащий кириллический текст?

Ответы [ 2 ]

1 голос
/ 21 августа 2012

Я решил эту проблему с помощью кириллицы

хорошую документацию вы можете увидеть здесь

следующий рабочий код:

$content = shell_exec('/usr/bin/antiword -m cp1251.txt '.$filename);
var_dump($content);

Обратите внимание на параметр -m (файл отображения символов)

вы забыли установить правильный файл сопоставления


Файл сопоставления с документом:

Q9: Which mapping file (-m option) is correct in my situation?
A9: The correct mapping file depends on the character set you need for output
    in a specific language.
    For Western European languages (like English, French, German) this is
    8859-1.txt. (OS/2: cp1252.txt) (DOS: cp850.txt)
    For Eastern European languages (like Polish, Czech, Slovak, Croatian) this
    is 8859-2.txt. (OS/2: cp1250.txt) (DOS: cp852.txt)
    For Esperanto use 8859-3.txt.
    For Russian use 8859-5.txt or koi8-r.txt. (OS/2: cp1251.txt)
     (DOS: cp866.txt)
    For Ukrainian use koi8-u.txt.
    For Arabic use 8859-6.txt. (DOS: cp864.txt)
    For Hebrew use 8859-8.txt. (DOS: cp862.txt)
    For Thai use 8859-11.txt.
    If your system supports it, you might also try UTF-8.txt.

    NOTE: UTF-8 also enables Antiword to show text in languages like Chinese,
          Japanese and Korean.
0 голосов
/ 02 декабря 2011

Antiword имеет параметр кодировки, может быть, вы попробуете:

 shell_exec('antiword -X UTF-8 test.doc')

Или использовать koi8-r, а затем конвертировать в php через iconv()


В качестве альтернативы попробуйте LibreOffice в режиме cmdline

 shell_exec('soffice --headless --convert-to txt test.doc')
...