Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Prezados, antes de tudo, gostaria de informar que já rodei o google em busca de uma solução, encontrei várias mas nenhuma serviu.
Estou tentando exibir o retorno de uma consulta em uma página php, porém ao selecionar registros na tabela, eles aparecem assim:
O retorno da consulta seria: época do açai ôpa 1º
�poca do a�ai �pa 1�
Meus arquivos .php foram codificados em utf-8 sem BOM no notpad++, o banco de dados e as tabelas estão em utf8_unicode_ci, já inseri <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > no HTML, header('Content-Type: text/html; charset=UTF-8'); no PHP e no arquivo de conexão com o bd mas n adiantou. No banco de dados ele grava certo através de um formulário JavaScript, porém na hora de exibir em um formulário ele aparece com erro de acento.
A consulta retorna value=' utf8_encode($valor); '> em um formulário javascript. Ela está exibindo retornando: utf8_encode(�poca do a�ai �pa 1�);
Estou fazendo errado?
>
Em 26/04/2018 at 14:03, Massaki disse:
Tente usar
utf8_encode($variavel)
A consulta retorna value=' utf8_encode($valor); '> em um formulário javascript. Ela está exibindo retornando: utf8_encode(�poca do a�ai �pa 1�);
Estou fazendo errado?Essas informações estão sendo retornadas via javascript para o HTML?
Na variável que retorna o valor do banco no PHP utilize o echo antes da função.
Por exemplo ao tentar imprimir um índice nome de um array $data['nome'], utiliza-se o código
echo utf8_encode($data['nome']);
Porém, em um projeto que estou estudando atualmente, isso ficou muito chato de fazer. Todo campo que os caracteres especiais bugarem precisa adicionar tal função.
Detalhe, a configuração do banco e a página html estão em UTF-8 aqui também.>
Em 02/05/2018 at 16:23, Gabriel Heming disse:
Essas informações estão sendo retornadas via javascript para o HTML?
Estão sendo retornadas em uma página php, dentro de um formulário javascript. Veja o código:
<?php
try {
$pdo = new PDO( 'mysql:host=localhost;dbname=meubanco' , 'usuario' , 'senha' );
$pdo->setAttribute( PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION );
$stm = $pdo->prepare( "SELECT * FROM `abc` " );
$stm->bindParam( ':id' , $usuario , PDO::PARAM_STR );
if ( $stm->execute() ) {
foreach ( $stm->fetchAll( PDO::FETCH_OBJ ) as $usuario ) {
echo " <table width='auto' cellspacing='1' cellpadding='0' bgcolor='white' layout='fixed' border='1'>
<tr>
<td width='auto'><font color='blue' size='2'><center><b>DI</td>
<td width='auto' ><font color='blue' size='2'><center><b>VALOR</td>
</tr>
<center>
<tr>
<form name='cli' action='confirmar.php' method='post'>
<td><center><input type='text' id='apelido' name='apelido' ReadOnly size='1' style='text-align:center' value='$usuario->id'></td>
<td><center><input type='text' id='valor' name='valor' ReadOnly size='20' style='text-align:center' value='$usuario->valor'></td>
</form>
</tr>
</table>
</fieldset>";
}
} var_dump( $e->getMessage() );
}
?>>
Em 07/05/2018 at 01:35, itamazor disse:
Na variável que retorna o valor do banco no PHP utilize o echo antes da função.
Por exemplo ao tentar imprimir um índice nome de um array $data['nome'], utiliza-se o código
echo utf8_encode($data['nome']);
Porém, em um projeto que estou estudando atualmente, isso ficou muito chato de fazer. Todo campo que os caracteres especiais bugarem precisa adicionar tal função.
Detalhe, a configuração do banco e a página html estão em UTF-8 aqui também.
Valeu cara, resolveu! Mas é bem chato ter que fazer isso para todas as variáveis que a gente for exibir, será que não tem uma forma automática de exibir sem precisar fazer isso para cada variável? Outra dúvida, como vou exibir isso dentro de um formulário que está dentro de um echo? Por exemplo:
echo " <table width='auto' cellspacing='1' cellpadding='0' bgcolor='white' layout='fixed' border='1'>
<tr>
<td width='auto'><font color='blue' size='2'><center><b>DI</td>
<td width='auto' ><font color='blue' size='2'><center><b>VALOR</td>
</tr>
<center>
<tr>
<form name='cli' action='confirmar.php' method='post'>
<td><center><input type='text' id='apelido' name='apelido' ReadOnly size='1' style='text-align:center' value='$usuario->id'></td>
<td><center><input type='text' id='valor' name='valor' ReadOnly size='20' style='text-align:center' value='$usuario->valor'></td>
</form>
</tr>
</table>";Pra quem quiser ver o código como ficou:
echo utf8_encode($usuario->valor);
>
15 minutos atrás, Gilsoney disse:
Valeu cara, resolveu! Mas é bem chato ter que fazer isso para todas as variáveis que a gente for exibir, será que não tem uma forma automática de exibir sem precisar fazer isso para cada variável? Outra dúvida, como vou exibir isso dentro de um formulário que está dentro de um echo? Por exemplo:
echo " <table width='auto' cellspacing='1' cellpadding='0' bgcolor='white' layout='fixed' border='1'>
<tr>
<td width='auto'><font color='blue' size='2'><center><b>DI</td>
<td width='auto' ><font color='blue' size='2'><center><b>VALOR</td>
</tr>
<center>
<tr>
<form name='cli' action='confirmar.php' method='post'>
<td><center><input type='text' id='apelido' name='apelido' ReadOnly size='1' style='text-align:center' value='$usuario->id'></td>
<td><center><input type='text' id='valor' name='valor' ReadOnly size='20' style='text-align:center' value='$usuario->valor'></td>
</form>
</tr>
</table>";
Como eu daria um echo dentro de outro echo?>
38 minutos atrás, Gilsoney disse:
Como eu daria um echo dentro de outro echo?
Eu descobri, fiz assim:
$exibir = utf8_encode($usuario->valor);
No formulário ficou assim:
value='$valor'
Opa, desculpa a demora.
Consegui resolver aqui de uma vez por todas.
O banco de dados tem que estar em UTF-8 general ci, o html também, mas... adivinha a pegadinha
Lembra que estamos fazendo consultas ao banco de dados, no PDO tem que ter outro parâmetro, além das informações de conexão:
$options = [ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'];
$pdo = new PDO( 'mysql:host=localhost;dbname=meubanco' , 'usuario' , 'senha', $options );
Esse (set names utf8) tem que passar como quarto parâmetro, agora basta tirar todos utf8_encode e decode que o código vai funcionar normalmente.
A outra dúvida: aconselho tirar todas as tags de dentro do echo, quando chegar na parte que executa o php, você insere o php assim:
value="<?php utf8_encode($variaveltal['teste']); ?>"
Se for apenas para imprimir alguma informação, pode utilizar <?=$variaveltal['nome']?> sem ponto e virgula e sem o nome php no início, que ele imprime normal.
Espero ter ajudado.
Vida longa e próspera! =]>
Em 29/05/2018 at 19:33, itamazor disse:
Opa, desculpa a demora.
Consegui resolver aqui de uma vez por todas.
O banco de dados tem que estar em UTF-8 general ci, o html também, mas... adivinha a pegadinha
Lembra que estamos fazendo consultas ao banco de dados, no PDO tem que ter outro parâmetro, além das informações de conexão:
$options = [ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'];
$pdo = new PDO( 'mysql:host=localhost;dbname=meubanco' , 'usuario' , 'senha', $options );
Esse (set names utf8) tem que passar como quarto parâmetro, agora basta tirar todos utf8_encode e decode que o código vai funcionar normalmente.
A outra dúvida: aconselho tirar todas as tags de dentro do echo, quando chegar na parte que executa o php, você insere o php assim:
value="<?php utf8_encode($variaveltal['teste']); ?>"
Se for apenas para imprimir alguma informação, pode utilizar <?=$variaveltal['nome']?> sem ponto e virgula e sem o nome php no início, que ele imprime normal.
Espero ter ajudado.
Vida longa e próspera! =]
Obrigado pela resposta amigão, quando eu tiver um tempo vou testar. Mas a solução anterior se adequou bem ao meu problema. Obrigado a todos!
Tente usar
utf8_encode($variavel)