pspell returns 问号(�)

pspell returns question marks(�)

我尝试使用以下命令在 Ubuntu 可信赖的发行版上安装 pspell:

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';

并且出于某种原因,对于任何给定的单词,它返回 "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 字典中检索数据时出现问题?

这看起来像是编码问题。您应该使用 UTF-8 作为 HTML 内容(检查您的页面 <head> 并检查您是否设置了编码, 但是 您还必须填充您的页面内容编码相同 UTF-8。如果(这种情况经常发生)您的 PHP 文件不是 UTF8,那么您的编码将不匹配,而是

由于每个单词检查都返回相同的结果,这让我怀疑传递给 pspell_suggest 函数的值可能已损坏。

我所做的只是告诉 pspell 使用 UTF-8:

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

这解决了问题。