特殊字符破解json返回jQuery

时间:2011-08-16 20:28:49

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

以下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”。如何正确显示此名称?

1 个答案:

答案 0 :(得分:0)

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

  1. 在使用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
  3. 如果没有这两个选项,可能值得查看页面使用的字符集。尝试并使用UTF-8对HTML进行编码,看看是否有帮助。

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

    希望这些指针中的任何一个都有帮助。让我知道你是怎么过的。