1

我有一点 PHP 从 MSSQL 数据库中获取数据并将其保存到数组中:

while($row = mssql_fetch_array($dbquery, MSSQL_NUM)) 
{
    $content = array(
        'something'         =>  $row[1],
        'something_else'    =>  $row[2]
        // etcetera
    );
}

(我认为我将数据写入这样的数组的原因并不相关,但如果你必须知道:这是因为数据是由 ExpressionEngine (EECMS) 解析的。PHP 代码是我正在开发的插件的一部分,并且这是使数据可用于 ExpressionEngine 标记的最简单方法。)

de MSSQL 数据库中的某些数据包含标点符号,例如 ë 和 é。分音符 (ë) 在 HTML 中显示为问号。例如,Cliënten显示为Cli�nten

HTML 为 UTF8:<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

我无法更改 MSSQL 数据库中的任何内容。解决此问题的最佳方法是什么,最好是在 PHP 中?

4

1 回答 1

2

当您看到这样的问号时,这意味着您的浏览器无法理解问号替换的字符应该代表什么。最有可能的是,它期待 utf8 字符编码并且没有得到它们。

尝试在您的阵列上运行类似的东西(在构建之后),看看是否有帮助:

$content = array_map('utf8_encode', $content);

基本上,您想对来自数据库的所有字符串运行 utf8_encode() 函数,因为它们显然没有在数据库中这样编码。

您还可以在输出每个变量之前立即运行 utf8_encode 函数。所以像:

<p><?php echo utf8_encode($content_row) ?></p>
于 2012-08-09T11:33:59.760 回答