Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mauricio Tutoweb

[Resolvido] json_encode utf8_encode array idioma árabe

Recommended Posts

Tenho um código que imprime um array em um grid com o json_encode no idioma árabe. banco mysql. usei no banco o collation utf8_general_ci e no meu sistema consegui inserir fazer o input das informações em área. no banco recebeu as informações em árabe, consigo imprimir no sistema todo é árabe mas no grid que imprimo com o json_encode ele exibe os dados assim: ????? não receonhece os dados em árabe vindos do banco.

 

a parte que interessa do script é:

 

 

$rs = mysql_query("SELECT * from t_registro

 

WHERE nome like '$nome%'

 

AND sobrenome like '$sobrenome%'

 

AND nome_mae like '$nome_mae%'

 

AND numero_registro like '$numero_registro%'

 

AND numero_pagina like '%$numero_pagina'

 

AND aldeia like '$aldeia%'

 

AND n_rg_civil like '$n_rg_civil%'

 

AND provincia like '$provincia%'

 

LIMIT $offset , $rows");

 

 

 

 

 

 

 

$items = array();

 

 

mysql_query("SET NAMES 'utf8'");

mysql_query('SET CHARACTER SET utf8');

 

 

 

 

while($row = mysql_fetch_object($rs)){

 

 

 

array_push($items, $row);

 

 

}

 

$result["rows"] = $items;

 

 

 

echo json_encode($result);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que o problema seja na hora de retornar os dados.

Isso vai variar conforme sua linguagem server-side.

 

No PHP, coloque na primeira linha do script que vai fornecer o retorno:

header('Content-type: application/json');

 

É implícito ao JSON que seja UTF-8, mas caso não funcione, tente assim:

 

header('Content-type: application/json;charset=utf-8');

 

Se for outra linguagem, o header é o mesmo, só não sei informar qual a função que vai setá-lo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Henrique,

 

O erro continua. Ainda imprime em com ?????? ao invés da escrita em árabe

 

Henrique,

 

Vou por o código todo desse arquivo para ver se ajuda:

 

<?php
header('Content-type: application/json;charset=utf-8');



include 'conn.php';



$page = isset($_POST['page']) ? intval($_POST['page']) : 1;



$rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10;




$nome = isset($_POST['nome']) ? mysql_real_escape_string($_POST['nome']) : '';



$sobrenome = isset($_POST['sobrenome']) ? mysql_real_escape_string($_POST['sobrenome']) : '';



$nome_mae = isset($_POST['nome_mae']) ? mysql_real_escape_string($_POST['nome_mae']) : '';



$numero_registro = isset($_POST['numero_registro']) ? mysql_real_escape_string($_POST['numero_registro']) : '';	



$numero_pagina = isset($_POST['numero_pagina']) ? mysql_real_escape_string($_POST['numero_pagina']) : '';



$aldeia = isset($_POST['aldeia']) ? mysql_real_escape_string($_POST['aldeia']) : '';



$n_rg_civil = isset($_POST['n_rg_civil']) ? mysql_real_escape_string($_POST['n_rg_civil']) : '';



$provincia = isset($_POST['provincia']) ? mysql_real_escape_string($_POST['provincia']) : '';





$offset = ($page-1)*$rows;




$result = array();



$where = "where nome like '$nome%' 

		  AND sobrenome like '$sobrenome%' 

		  AND nome_mae like '$nome_mae%' 

		  AND numero_registro like '$numero_registro%' 

		  AND numero_pagina like '%$numero_pagina' 

		  AND aldeia like '$aldeia%' 

		  AND n_rg_civil like '$n_rg_civil%' 

		  AND provincia like '$provincia%'";  




   $rs = mysql_query("select count(*) from t_registro ".$where);



$row = mysql_fetch_row($rs);



$result["total"] = $row[0];




   $rs = mysql_query("SELECT * from t_registro 

				   WHERE nome like '$nome%'

				   AND sobrenome like '$sobrenome%'

				   AND nome_mae like '$nome_mae%'

				   AND numero_registro like '$numero_registro%'

				   AND numero_pagina like '%$numero_pagina'

				   AND aldeia like '$aldeia%'

				   AND n_rg_civil like '$n_rg_civil%'

				   AND provincia like '$provincia%'

				   LIMIT $offset , $rows");





$items = array();


mysql_query("SET NAMES 'utf8'"); 
mysql_query('SET CHARACTER SET utf8');




while($row = mysql_fetch_object($rs)){




	array_push($items, $row);	


}

$result["rows"] = $items;



echo json_encode($result); 






?>















 

Cara já testei muita coisa e nada funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema.

 

No arquivo de conexão tem que ter a informação:

 

mysql_query("SET NAMES 'utf8'");

 

mysql_query('SET CHARACTER SET utf8');

 

 

Eu idiotamente(até agora não sei pq) estava usando apenas nesse arquivo que lista o grid um arquivo de conexão diferente na qual não tinha essa informação acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.