我无法获取PHP 5.3代码以完全返回MySQL(5.5)数据库中的内容。

我正在使用jquery-ui-autocomplete(1.9.2,但它也用1.8.x做到了)来检索城市名称。例如,一个城市为“Heßheim”,但PHP返回“ He ß heim”。数据库/表排序规则为Latin1_general_ci,但是将其更改为utf8_general_ci并没有帮助。我的PHP代码:

$term = trim(strip_tags($_GET['term']));
//retrieve the search term that autocomplete sends

if (!is_numeric($term)) {
    $qstring = "SELECT DISTINCT city FROM table WHERE city LIKE '" . $term . "%' ORDER BY city ASC";
    $result = mysql_query($qstring);
    //query the database for entries containing the term

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { //loop through the retrieved values
        //$row['id'] = (int)$row['id'];
        $row['city'] = htmlentities(strip_tags($row['city']));
        $row_set[] = htmlspecialchars_decode($row['city']);
        //build an array
    }
}

header('Content-Type: text/html; charset=utf-8');
echo json_encode($row_set);


我已经尽力尝试解码HTML实体,但即使是上述方法也没有做到。另外,$row['city'] = htmlentities(strip_tags($row['city']));必须存在,否则它不会为Heßheim返回任何内容。

测试脚本将返回此网页-[“ Heddesheim”,“ Heidelberg”,“Heßheim”]-并且页面源看起来像这样-[“ Heddesheim”,“ Heidelberg”,“ He ß heim”]。当然,jquery-ui-autocomplete将其列为He ß heim。

最佳答案

您应该使用html_entity_decode()而不是htmlspecialchars_decodePHPMAN

另外,为什么只对它进行编码就解码呢?浏览器将在渲染页面时解码实体,所以我认为您所需要的只是

$row['city'] = htmlentities(strip_tags($row['city']));
$row_set[] = $row['city'];

关于php - PHP代码返回了特殊德国字符的HTML实体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14073009/

10-12 12:49