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?
2 ответа
Поскольку каждая проверка слова возвращалась с одинаковыми результатами, я подозревал, что, возможно, значение, которое передается pspell_suggest
функция повреждена.
Я просто сказал pspell
использовать UTF-8:
$t = pspell_new('he', "", "", "utf-8");
Это решило проблему.
Это похоже на проблему кодирования. Вы должны использовать UTF-8
для содержимого HTML (проверьте свою страницу <head>
и проверьте, если вы установили кодирование, НО также вы должны заполнить свою страницу с содержанием, закодированным в том же UTF-8
, Если (что может часто случиться) ваш файл PHP не является UTF8, то у вас будет несовпадение кодировки и �
вместо.