我无法获取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_decode
。 PHPMAN
另外,为什么只对它进行编码就解码呢?浏览器将在渲染页面时解码实体,所以我认为您所需要的只是
$row['city'] = htmlentities(strip_tags($row['city']));
$row_set[] = $row['city'];
关于php - PHP代码返回了特殊德国字符的HTML实体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14073009/