【问题标题】:Special characters break json returned to jQuery特殊字符中断json返回给jQuery
【发布时间】:2011-10-28 09:55:56
【问题描述】:

以下 jQuery ajax 函数运行一个 PHP 脚本,该脚本查询包含编码为 UTF-8 的条目的 MySQL 数据库:

function searchLocations() {

    var stateSelected = $("#stateSelect").val();

    $.ajax({
        url: 'ajax/json.php',
        dataType: 'json',
        data: 'state='+stateSelected,
        success: function(data) {
            placeMarkers(data.markerdata.markers);
        }
    });

}

返回给函数的 JSON 对象包含地图标记对象的经度和纬度以及单击每个标记时在信息窗口中显示的名称。

每个名称都可以正常加载,并且显示没有问题,除了包含字符“ñ”的单个名称。此名称在 JSON 对象中返回为“null”。我怎样才能让这个名字正确显示?

【问题讨论】:

    标签: php jquery json utf-8 character-encoding


    【解决方案1】:

    我曾经遇到过这个问题,发现有两种选择:

    1. 在 PHP 中,使用 PHP 函数 htmlentities (http://php.net/manual/en/function.htmlentities.php) 将所有字符转换为 HTML 友好字符,然后再将其返回给 jQuery 函数。
    2. 如果失败或字符未转换,您可以尝试使用 base64 编码和解码。在 PHP 中,您可以使用 base64_encode 函数 (http://php.net/manual/en/function.base64-encode.php) 对数据进行编码。然后在 jQuery 中,您可以使用许多 base64 编码和解码插件之一来解码数据。我过去成功使用过这个插件:http://plugins.jquery.com/project/base64-encode-and-decode

    如果这两个选项都失败,则可能值得查看您的页面使用的字符集。尝试使用 UTF-8 对 HTML 进行编码,看看是否有帮助。

    如果你没有使用 jQuery 和 AJAX,如果你做了一个基本的 PHP 页面来查询有问题的数据并打印出名称,它仍然不能正确显示。如果不是,也可能是 MySQL 的字符集问题。

    希望这些指针对您有所帮助。让我知道你的进展情况。

    【讨论】:

    • 你能告诉我你是怎么做到的吗? “htmlentities($str);”对我不起作用!
    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多