Jquery UI自动完成重音映射不适用于从属字符


Jquery UI autocomplete accent map not working with slavic characters

我制作了mysql数据库。我在里面存储了值,它们都是utf8_unicode_ci。

我制作了jquery ui自动完成字段,该字段从数据库中读取值。

$(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名称所在的行出现错误-意外的令牌。如果我删除带有特殊字符的值,错误将不再存在。

有人有这个问题吗?

编辑:

$rows的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)

如果我回显$rows,我会得到这个:

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'];
    }

仅此一提。在我的数据库中,所有字符都显示正确。

问题是没有元字符集utf8。我添加了它,现在一切都正常了。