Caracteres Estranhos Na Consulta de CEP

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Caracteres Estranhos Na Consulta de CEP

Mensagem por asimoes »

Boa Noite,

Preciso de ajuda.

Estou implementado em uma rotina de cadastro a função para buscar o logradouro pelo CEP informado, para isso estou usando um exemplo postado aqui no forúm para busca pelo cep:

Estou fazendo testes antes de usar no cadastro.
O código que estou testando é esse:

Código: Selecionar todos

cVar:="22735000"
oCEP:=Win_oleCreateObject("MSXML2.ServerXMLHTTP")
oCEP:Open("GET","http://cep.republicavirtual.com.br/web_cep.php?cep=" + cVar + "&formato=xml",.F.)
oCEP:Send()
cBuf:= oCEP:responseText
memoedit(cBuf)
A função funciona perfeitamente, trazendo o logradouro. Porém o único problema que não consegui resolver é quando o logradouro tem acentuação (á,ç, ó etc...):
O logradouro Geremário Dantas por exemplo está vindo assim: Gerem?o Dantas, além de não vir acentuado está truncando a palavra.
Resultado do código acima:

Código: Selecionar todos

<?xml version="1.0" encoding="iso-8859-1" ?>
<webservicecep>
<resultado>1</resultado>
<resultado_txt>sucesso - cep completo</resultado_txt>
<uf>RJ</uf>
<cidade>Rio de Janeiro</cidade>
<bairro>Tanque</bairro>
<tipo_logradouro>Avenida</tipo_logradouro>
<logradouro>Gerem?o Dantas</logradouro>

</webservicecep>
Executando a url diretamente pelo browser firefox os caracteres aparecem certo:
http://cep.republicavirtual.com.br/web_ ... ormato=xml

Para este teste estou usando harbour com mingw.

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Caracteres Estranhos Na Consulta de CEP

Mensagem por asimoes »

Caros,

Por hora resolvi o problema dos caracteres dessa forma:

O problema é que o encoding que vem de oCEP:responseText está com charset UTF-8 e deveria ser ISO-8859-1
Com o código abaixo consegui resolver o problema.

Código: Selecionar todos

nHandleDLL:=hb_LibLoad("UrlMon.dll")
nStatus:=hb_dynCall( { "URLDownloadToFileA", nHandleDLL,HB_DYN_CALLCONV_STDCALL},0,"http://cep.republicavirtual.com.br/web_cep.php?cep=" + cCep + "&formato=xml","logradouro.xml",0,0)
hb_LibFree(nHandleDLL) //liberar a dll
cBuf:=HB_AnsiToOem(FileStr("logradouro.xml"))
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder