Caracteres especiais quebra json voltou para jQuery

A seguinte function jQuery ajax executa um script PHP que consulta um database MySQL contendo inputs codificadas como UTF-8:

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

O object JSON retornado para a function contém as longitudes e latitudes dos objects de marcador de mapa, bem como um nome a ser exibido em uma janela de informações quando cada marcador é clicado.

Todo nome carrega bem e é exibido sem um problema, exceto para um nome único que contém o caractere “ñ”. Esse nome é retornado no object JSON como “nulo”. Como posso fazer com que este nome seja exibido corretamente?

Eu costumava ter esse problema e descobri que havia duas opções:

  1. Em PHP, converta todos os caracteres em caracteres amigáveis ​​com HTML usando a function PHP htmlentities (http://php.net/manual/en/function.htmlentities.php) antes de retorná-lo à function jQuery.
  2. Se isso falhar ou os caracteres não forem convertidos, você poderá tentar usar o cod64 e codificar base64. No PHP você pode codificar os dados usando a function base64_encode (http://php.net/manual/en/function.base64-encode.php). Então, em jQuery, você poderia usar um dos vários plugins de codificação e decodificação base64 para decodificar os dados. Eu usei este plugin com sucesso no passado: http://plugins.jquery.com/project/base64-encode-and-decode

Falhando nessas duas opções, vale a pena olhar para o conjunto de caracteres usado por sua página. Tente usar UTF-8 para codificar seu HTML e veja se isso ajuda.

Sem usar jQuery e AJAX se você fez uma página básica do PHP que consultou os dados em questão e imprima o nome, ele ainda não é exibido corretamente. Se não, ele também pode ser um problema de conjunto de caracteres com o MySQL.

Espero que qualquer um desses pointers ajude. Deixe-me saber como você continua.