我无法让我的 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。