Ir para conteúdo

Arquivado

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

Apenas Eu

Substituir UTF8_Unicode na linha echo

Recommended Posts

Olá!

Eu tenho um problema com a compatibilidade da pagina html com o banco de dados mysql.

 

Eu consegui resolver o problema com a dica de um colega aqui do fórum que sugeriu fazer isso:

echo utf8_encode($string)

O que eu gostaria de saber se tem como usar este comando sem a necessidade de colocar utf8 em toda as linhas.

Por exemplo:

echo utf8_encode($string) // assim nao

//e nem assim:
$string = utf8_encode ($row=['string'])
$string1 = utf8_encode ($row=['string1'])
$string2 = utf8_encode ($row=['string2'])

A ideia seria fazer este comando só uma vez em uma linha sem a necessidade de colocar ele linha por linha, entendeu a ideia?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem jeito. Se o banco de dados está em outra codificação, terá de chamar utf8_encode onde for necessário.

 

O que pode agilizar um pouco é criar uma função que percorre o array $row e aplica a função utf8_encode em todos os seus elementos.

 

Veja estes exemplos:

http://php.net/manual/pt_BR/function.utf8-encode.php#75422

https://gist.github.com/maggo/1414988

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou colocar no DSN a codificação?

Se sim e não funcionou, não tem jeito, é como o Beraldo falou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem jeito. Se o banco de dados está em outra codificação, terá de chamar utf8_encode onde for necessário.

 

O que pode agilizar um pouco é criar uma função que percorre o array $row e aplica a função utf8_encode em todos os seus elementos.

 

Veja estes exemplos:

http://php.net/manual/pt_BR/function.utf8-encode.php#75422

https://gist.github.com/maggo/1414988

 

Oláaa!!

 

Eu acho que só consegui entender o link 2. Eu acho que se fosse o meu caso, faríamos:

<?php
function array_encode(&$arr){
    array_walk_recursive($arr, function(&$val, $row){
	$val = utf8_encode($val);
    });
    return $arr;
}

De qualquer forma esse script faz no arquivo de conexão ou no próprio arquivo que lê o BD?

 

Já tentou colocar no DSN a codificação?

Se sim e não funcionou, não tem jeito, é como o Beraldo falou.

Oláa!!

Então eu até tentei isso, mas acho que fiz errado porque não funcionou hehehe, mas posso tentar de novo. Esse script parece ser mais fácil que o eu tinha achado ontem na net que era semelhante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que só consegui entender o link 2.

O primeiro link usa recursão. Se você nunca viu isso, terá dificuldades mesmo. Procure ler sobre Recursão. É muito útil.

 

 

De qualquer forma esse script faz no arquivo de conexão ou no próprio arquivo que lê o BD?

Isso é uma função. Você deve declará-la em um arquivo de funções, que será incluído onde for necessário.

Depois basta chamar essa função onde os dados fores lidos, para aplicar na variável $row, por exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Beraldo... obrigado pelas dicas,

 

Eu entendi, mas se a nossa variavel (a que eu preciso) for se chamar $row, eu apliquei ela da forma correta no exemplo que eu postei?

<?php
function array_encode(&$arr){
array_walk_recursive($arr, function(&$val, $row){
    $val = utf8_encode($val);
});
return $arr;
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenho esse mesmo problema

na pagina de conexão coloquei da seguinte forma e funciona que é uma beleza

 

 

<?php
header('Content-Type: text/html; charset=utf-8');
$conexao = mysql_connect("localhost","root","senha");
$conecta = mysql_select_db("sistema",$conexao);
mysql_query("SET NAMES 'utf8'");
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_results=utf8');
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cesaroet, tudo bem?

Eu acho que tentei fazer isso mas não funcionou. De qualquer forma eu vou tentar de novo.

 

As outras dicas, uma não surtiu efeito e a outra eu acho que não entendi bem daí nem funcionar funcionou....

 

Obrigado a todos por enquanto....

--

Deu certo a dica acima. Acho que não dava antes (das outras dicas) por causa duma função de upload de imagem que tinha la junto. Eu não sei ela vai funcionar bem, mas mais para frente eu testo

 

Muuuito obrigado novamente

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.