pspell возвращает вопросительные знаки (�)

Я попытался установить pspell в надежном дистрибутиве Ubuntu с помощью следующих команд:

sudo apt-get install libpspell-dev sudo apt-get install php5-pspell sudo apt-get install aspell-he

Похоже, что процесс прошел успешно, так как в процессе установки не было возвращено никаких ошибок.

Однако, когда я пробую это в действии, я получаю массив вопросительных знаков (�):

pspell_config_create("he");
$t = pspell_new('he');

$suggestions = pspell_suggest($t, 'דבל');


return view('master', compact('suggestions')); 
// the above line can be swapped with"
// print_r($suggestions);
// and the result stays the same

Причина, по которой я использовал представление, заключается в том, что я подумал, что, возможно, веб-странице нужна некоторая кодировка, поэтому я использовал структуру документа HTML5 для достижения этого, однако результат остался прежним.

Моя HTML-разметка:

<!doctype html>
<html lang="he">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    סתם טקסט לבדיקה
    <?php print_r($suggestions); ?>
</body>
</html>

Результат вернулся из этого:

סתם טקסט לבדיקה Array ( [0] => � [1] => � [2] => � [3] => � [4] => � [5] => � [6] => � )

Я также провел еще один тест, в котором пытался сделать:

return pspell_check($t, 'הגדא') ? 'there is' : 'nope';

И по какой-то причине для любого данного слова он возвращал «нет», что означает, что pspell_check возвращал false

Есть идеи, как это исправить?

Редактировать:

При попытке получить длину результатов:

<!doctype html>
<html lang="he">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
@foreach($suggestions as $suggestion)
    {{ strlen($suggestion) }} <br>
@endforeach
</body>
</html>

Результат:

1 
1 
1 
1 
1 
1 
1 

Это означает, что, возможно, возвращенные результаты из метода pspell_suggest имели проблемы с извлечением данных из словаря aspell?


person kfirba    schedule 21.06.2015    source источник


Ответы (2)


Это похоже на проблему с кодировкой. Вы должны использовать UTF-8 для HTML-контента (проверьте свою страницу <head> и убедитесь, что вы установили кодировку, НО также вы должны заполнить свою страницу контентом, закодированным в том же UTF-8. Если (что может часто происходить) ваш файл PHP не является UTF8, тогда у вас будет несоответствие кодировки и вместо этого .

person Marcin Orlowski    schedule 21.06.2015
comment
Привет. Я пробовал это. Посмотрите мой отредактированный ответ, чтобы увидеть HTML, который я использую. Ответ: סתם טקסט לבדיקה Array ( [0] => � [1] => � [2] => � [3] => � [4] => � [5] => � [6] => � ). Проблема, к сожалению, осталась прежней - person kfirba; 21.06.2015

Поскольку каждая проверка слов возвращала одинаковые результаты, у меня возникло подозрение, что, возможно, значение, передаваемое функции pspell_suggest, повреждено.

Я просто сказал pspell использовать UTF-8:

$t = pspell_new('he', "", "", "utf-8");

Это решило проблему.

person kfirba    schedule 21.06.2015