Se em algum campo tiver a palavra "Éramos", por exemplo, ao executar um encode (utilizei a Services_JSON provida pelo PEAR), ele retornará algo como \u0072amos que será renderizado como "ramos".
Depois de googlar sobre o assunto, descobri uma maneira de evitar esse problema.
Considere que o código abaixo é um PHP que retorna dados no formato JSON
<?php
header('Content-type: application/json charset=iso-8859-1');
/*
* codigo para conexao no banco e enviar consulta
* ...
*/
while($row = fetch()){
array_walk($row, 'toUtf8');
$data[] = $row;
}
/*
* codigo para terminar de montar o array de retorno dos dados
*/
require_once('JSON.php');
$json = new Services_JSON();
echo $json->encode($returnValue); // Instead of json_encode
function toUtf8(&$item, $key) {
$item = iconv("iso-8859-1","utf-8",$item);
}
O segredo está aqui:$item = iconv("iso-8859-1","utf-8",$item);
O fato de converter todas strings para utf-8 utilizando a iconv, garantiu que meus dados fossem renderizados corretamente.
Por hoje é isso!
Abraços.