我制作了mysql数据库。我在其中存储了值。它们都是utf8_unicode_ci。
我创建了jquery-ui自动完成字段,从db读取值。
$(function() {
var names = <?php echo json_encode($rows); ?>;
var accentMap = {
"š": "s",
"đ": "d",
"č": "c",
"ć": "c",
"ž": "z",
"Š": "S",
"Đ": "D",
"Č": "C",
"Ć": "C",
"Ž": "Z"
};
var normalize = function( term ) {
var ret = "";
for ( var i = 0; i < term.length; i++ ) {
ret += accentMap[ term.charAt(i) ] || term.charAt(i);
}
return ret;
};
$( "#field1" ).autocomplete({
source: function( request, response ) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), "i" );
response( $.grep( names, function( value ) {
value = value.label || value.value || value;
return matcher.test( value ) || matcher.test( normalize( value ) );
}) );
}
});
});
当我从重音地图插入一些字符的值时,我的自动完成功能停止工作。当我用特殊字符删除值时,一切正常。 我在控制台上遇到错误,我的var名称是 - 意外的令牌。如果我删除带有特殊字符的值,则错误不再存在。
有人有这个问题吗?
编辑:
$ row的$ var_dump显示了这个:
array (size=8)
0 => string 'Split' (length=5)
1 => string 'Hajduk' (length=6)
2 => string 'Monkey' (length=6)
3 => string 'First' (length=5)
4 => string 'Zagreb' (length=6)
5 => string 'Table' (length=5)
6 => string 'Computer' (length=8)
7 => string '�ibenik' (length=7)
如果我回显$行,我会得到这个:
Array
如果删除第7行,一切正常。
这是我的php:
global $rows;
require_once ('database_connect.php');
$query = 'SELECT words FROM tbl';
$result = mysqli_query($dbc, $query);
$rows = array();
while ($r = mysqli_fetch_assoc($result)) {
$rows[] = $r['words'];
}
还有。在我的数据库中,所有字符都显示正确。
答案 0 :(得分:0)
问题是没有meta charset utf8。我添加了它,现在一切正常。