首页 > 解决方案 > devbridge 自动完成中的特殊字符

问题描述

我正在使用最新的 devbridge 自动完成功能,它显示来自 mysql 数据库的德国城市,但它不会重新使用特殊字符。

我的测试文件如下所示:

<html>
<html lang="de">

<head>
<meta charset="utf-8"/>
<script src="jquery-1.8.2.min.js"></script>
<script src="jquery.autocomplete.min.js"></script>
<link rel="stylesheet"type="text/css" href="styles.css">
<style>
    h1 {text-align: center; margin: 20px 20px;}
    #autocomplete,#country {margin: 0 auto;}
</style>
</head>

<body>
<h1>Autocomplete Input</h1>
<input type="text" id="autocomplete">

<script>
$('#autocomplete').autocomplete({
    serviceUrl: 'search.php',
    minChars: 2,
    onSelect: function (suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
    }
});
</script>
</body>
</html>

search.php 文件如下所示:

<?php

///
/*** connect to your DB here ***/
include_once "scripts/connect_all.php";
///

//retrieve the search term and strip and clean input
$term = trim(strip_tags($_GET['query'])); 

//try to make user input safer
$term = mysqli_real_escape_string($myConnection, $term);

//build a query on the database
$sqlCommand = "SELECT gemeinde FROM cities WHERE gemeinde LIKE '%".$term."%'"; 

//query the database for entries containing the term
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());

$reply = array();
$reply['suggestions'] = array();

while ($row = mysqli_fetch_array($query)) { 
    $gemeinde = $row["gemeinde"];
    $reply['suggestions'][]=htmlentities(stripslashes($row['gemeinde']));

} 
mysqli_free_result($query);

//format the array into json data
echo json_encode($reply);

?>

运行search.php?query=münch时会抛出:

{"suggestions":["Münchehofe","Müncheberg, Stadt","Münchenbernsdorf, Stadt","Korntal-Münchingen, Stadt","Münchwald","München, Landeshauptstadt","Grafing b.München, St","Garching b.München, St","Kirchheim b.München","Gdefr. Geb. (Lkr München)","Münchsmünster","Bodenwerder, Münchhausenstadt","Münchweiler an der Alsenz","Glan-Münchweiler","Münchweiler am Klingbach","Münchweiler an der Rodalb","Waldmünchen, St","Münchberg, St","Münchhausen","Münchsteinach","Schwabmünchen, St"]}

但是当将它提供给自动完成功能时,它会抛出一个包含正确位置的列表,但会将特殊字符转换ü&uuml;

如何确保特殊字符保留在自动完成功能的输出中?

标签: phpjsonajaxautocomplete

解决方案


得到它并在下面分享答案以供将来参考。删除 htmlentities 和 stripslashes 完成了这项工作,所以:

$reply['suggestions'][]=($row['gemeinde']);

推荐阅读