jQuery UI自动完成 - 西班牙语字符在本地正确显示,但不在服务器

时间:2016-12-31 22:56:20

标签: php jquery mysql json jquery-ui

我正在使用jQuery Autocomplete,并且在我的本地计算机上它适用于特殊的西班牙语字符,但在服务器上,它无法正确显示。

本地机器:

enter image description here

请注意“FernandoCañas”的正确显示。在当地没问题。那么我将我的PHP文件部署到我的linux服务器(运行MySQL),运行相同的东西,然后我得到“FernandoCa as”。

奇怪的是,当我在浏览器窗口中查看原始json时,它会正确显示:“FernandoCañas”。但是在Chrome开发者工具中(从服务器运行到我的本地Chrome),再次出错:

enter image description here

总之,在我的本地PC上,Windows 10,运行PHP的PHP和MySQL,一切都很完美。但是在我的linux服务器上(在Apache和MySQL上运行PHP),这是细分:

  • jquery autocomplete:错误
  • Chrome开发者工具查看json:错误
  • Chrome浏览器,查看jason:正确

enter image description here

这是服务器发出的json(当我在本地运行时相同):

{"id":"4225","value":"Fernando Cañas - (555) 555-5555"}

这是我的jquery:

$("#SearchStudents").autocomplete({
    formatResult: function(row) {
        return $('<div/>').html(row).html();
    },
    source: function(request, response) {
        $.ajax({
            url: "SearchStudents.php",
            dataType: "json",
            data: {
                term: request.term,
                IncludeInactive: document.getElementById("chkSearchInactive").checked
            },
            success: function(data) {
                console.log(data);
                response(data);
            }
        });
    },
    minLength: 2,
    open: function() {
        $('#SearchStudents').autocomplete("widget").width(350);
    },
    select: function(event, ui) {
        location.href = "Students.php?StudentID=" + ui.item.id;
    }
});

请注意,以下区块没有区别,无论是否存在:

formatResult: function(row) {
    return $('<div/>').html(row).html();
}

解决方案是什么?

1 个答案:

答案 0 :(得分:1)

似乎服务器存在utf8问题,请确保:

  1. 您的MySQL表格以const AnimatedFontAwesome = Animated.createAnimatedComponent(FontAwesome); ... <AnimatedFontAwesome name={route.title === 'New' ? 'clock-o' : 'fire'} size={14} style={{ color }} /> 编码(您可以在操作&gt; phpMyAdmin中的整理中更改)
  2. 内容类型HTML将此标记放在您的HTML文件中:utf8_spanish_ci
  3. 在返回XML,JSON或任何Ajax调用的PHP文件上执行此操作之前,打印任何内容:<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  4. 设置名称,在创建PHP / MySQL连接时,在连接后发送此查询:header("Content-Type: text/html;charset=utf-8");
  5. 将所有内容保存为UTF-8编码。
  6. latin1 转换为 UTF-8: $db->query("SET NAMES 'utf8'");
  7. 您可以在http://xaviesteve.com/354/acentos-y-enes-aparecen-mal-a%C2%B1-en-php-con-mysql-utf-8-iso-8859-1/

    了解更多相关信息