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

Posted

技术标签:

【中文标题】jQuery UI 自动完成 - 西班牙语字符在本地正确显示,但在服务器上不正确【英文标题】:jQuery UI autocomplete - Spanish character displays correctly locally but not on server 【发布时间】:2017-05-15 16:47:17 【问题描述】:

我正在使用 jQuery Autocomplete,在我的本地机器上它可以很好地处理特殊的西班牙语字符,但在服务器上,它不能正确显示。

本地机器:

注意“Fernando Cañas”的正确显示。本地没问题。然后我将我的 php 文件部署到我的 linux 服务器(运行 mysql),运行相同的东西,我得到“Fernando Ca�as”。

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

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

jquery 自动完成:错误 Chrome 开发者工具查看 json:错误 Chrome浏览器,查看jason:对

这是服务器发出的 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】:

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

    您的 MySQL 表在 utf8_spanish_ci 中编码(您可以在 phpMyAdmin 中的 Operations > Collat​​ion 下更改它) 内容类型 HTML 将此标记放在您的 HTML 文件中:&lt;meta http-equiv="Content-type" content="text/html; charset=utf-8" /&gt; 在返回 XML、JSON 或任何 Ajax 调用的 PHP 文件上,在打印任何内容之前执行此操作:header("Content-Type: text/html;charset=utf-8");。 设置名称,创建PHP/MySQL连接时,连接后发送此查询:$db-&gt;query("SET NAMES 'utf8'"); 将所有内容保存为 UTF-8 编码。 从 latin1 转换为 UTF-8: SELECT convert(cast(convert(content using latin1) as binary) using utf8) AS content

您可以在以下位置阅读更多信息:http://xaviesteve.com/354/acentos-y-enes-aparecen-mal-a%C2%B1-en-php-con-mysql-utf-8-iso-8859-1/

【讨论】:

以上是关于jQuery UI 自动完成 - 西班牙语字符在本地正确显示,但在服务器上不正确的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式用 JQuery ui 自动完成替换某些字符

Jquery UI 自动完成; minLength:0 期

jQuery UI 自动完成 - 输入与结果集不匹配时不显示结果

首次加载页面时,Jquery UI 自动完成功能不起作用

jQuery UI 自动完成使用startsWith

如何实现类似于 jQuery UI 自动完成的 Dojo 自动完成?