Ir para conteúdo

POWERED BY:

Arquivado

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

*_Charles Potter_*

Problema com Charset

Recommended Posts

Ola Gente

 

Estou com um xml em ISO-8859-1, meu documento php também esta em ISO-8859-1

Porem os textos de meu xml foram todos gravados errados, exemplo

 

ASSINATURA DE PUBLICAÇÕES

Virou

ASSINATURA DE PUBLICAیES

 

E preciso decodificar tudo, já tentei todos os charsets possíveis porem não consigo transformar "ASSINATURA DE PUBLICA€åES" no texto correto.

 

Alguem sabe me dizer porque?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara , eu não curto ficar trocando os charset.

 

Sempre uso utf-8 pras pagina em php normal.

E quando cadastro no banco de dados, não faço alteração nenhuma para algum outro charset.

 

Nem mexo nas config do banco tb!

Compartilhar este post


Link para o post
Compartilhar em outros sites

qto tempo vc levou para testar todos os chartsets?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

O problema é que tenho o xml já, preciso "corrigir" ele

Utilizei mb_list_encodings e iconv para testar todos os charsets, em nenhum me retornou o texto corrigido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola

 

Tentei desta forma:

 

$TextoTeste = "ASSINATURA DE PUBLICAیES";
foreach(mb_list_encodings() as $chr)
{
echo iconv("UTF-8", $chr, $TextoTeste)." : ".$chr."<br>";
}
E por sugestão do amigo "Hinom"
$TextoTeste = "ASSINATURA DE PUBLICAیES";
foreach(mb_list_encodings() as $chr)
{
echo mb_convert_encoding($TextoTeste, "UTF-8", $chr)." : ".$chr."<br>";
}
Porem das duas formas nenhum charset resultou no texto correto


PS.:

O xml que estou tentando "decodificar" é o http://www.camara.gov.br/cotas/AnoAtual.zip

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendo porque usou mb_list_encodings...

 

vc deve usar mb_convert_encoding e mb_detect_encoding

 

Outra coisa é, no teste que está fazendo pode não ser efetivo pois a string estará sob o encode do arquivo de testes..

 

 

 

 

[off]

 

 

*remova esse link.. site do governo brother, se liga...

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde Hinom

 

Como sugeres que eu decodifique os textos dispostos em http://www.camara.gov.br/cotas/AnoAtual.zip?



Caso eu apenas liste os dados, os mesmos vem todos com charset errado

 

$hdl = simplexml_load_file("AnoAtual.xml");
$i=0;
foreach( $hdl->DESPESAS->DESPESA as $Linha )
{
$i++;
echo $Linha->txtDescricao . "<br>";
if( $i >= 10 )
{
exit();
}
}
Retorna
ASSINATURA DE PUBLICAیES
ASSINATURA DE PUBLICAیES
ASSINATURA DE PUBLICAیES
ASSINATURA DE PUBLICAیES
ASSINATURA DE PUBLICAیES
ASSINATURA DE PUBLICAیES
ASSINATURA DE PUBLICAیES
ASSINATURA DE PUBLICAیES
ASSINATURA DE PUBLICAیES
ASSINATURA DE PUBLICAیES


Apenas como observação, o link http://www.camara.gov.br/cotas/AnoAtual.zip é de acesso PUBLICO, não quebra nenhum tipo de regra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentou usar tambem as funcões nativas ?

 

utf8_encode() / utf8_decode() ?

 

exemplo:

 

$TextoTeste = utf8_encode("ASSINATURA DE PUBLICAیES");

Compartilhar este post


Link para o post
Compartilhar em outros sites

#8

 

 

 

 
define( 'CHARSET',   'UTF-8' );
ini_set( 'default_charset', CHARSET );
ini_set( 'mbstring.http_output', CHARSET );
ini_set( 'mbstring.internal_encoding', CHARSET );
header( 'Content-Type: text/plain; charset=' . CHARSET );
 
 

$hdl = simplexml_load_file("AnoAtual.xml");
 
$i=0;
foreach( $hdl->DESPESAS->DESPESA as $Linha )
{
    $i++;

    echo mb_convert_encoding( $Linha->txtDescricao, 'UTF-8', mb_detect_encoding( $Linha->txtDescricao, 'auto') ) . PHP_EOL;
 
   if( $i >= 10 )
   {
       exit();
   }
 
 
}

 

 

*esteja ciente de que não é a solução definitiva.

 

Apesar de ser um teste, normalmente uso isso para converter.

 

 

[off]

LEIA o spoiler no post #7

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia Himon

 

Obrigado pela dica, porem não resolver, acredito que o xml foi criado incorretamente

Output:

ASSINATURA DE PUBLICAåESASSINATURA DE PUBLICAåESASSINATURA DE PUBLICAåESASSINATURA DE PUBLICAåESASSINATURA DE PUBLICAåESASSINATURA DE PUBLICAåESASSINATURA DE PUBLICAåESASSINATURA DE PUBLICAåESASSINATURA DE PUBLICAåESASSINATURA DE PUBLICAåES

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tive um problema semelhante mas com retorno de dados da base, programei o sistema em um software e deu esse monte de erro e por mais que eu abrisse em outro e trocasse o charset o erro persistia tive que reescrever tudo, fiqueo PU$# da vida.

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.