特殊字符破解json返回jQuery

以下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. 在PHP将所有字符转换为HTML友好字符时,使用PHP函数htmlentities(http://php.net/manual/en/function.htmlentities.php)将其返回到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的字符集问题。

希望这些指针都有所帮助。 让我知道你是怎么办的。