ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

No mapping for the Unicode character exists....

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17338

MensagemEnviada: Ter Mai 08, 2018 11:16 am    Assunto: No mapping for the Unicode character exists.... Responder com Citação

Sempre usei o código abaixo para pegar o CEP deste link
http://republicavirtual.com.br/web_cep.php?
Código:
procedure BuscaCEPNet(aTFieldCEP: String;
  var aTFieldLogradouro, aTFieldEndereco, aTFieldBairro, aTFieldCidade,
  aTFieldUf: String);
var
  aidHTTP: TIdHTTP;
  ListaEndereco: TStringList;
begin

  ListaEndereco := TStringList.Create;
  aidHTTP := TIdHTTP.Create;
  try
    ListaEndereco.Delimiter := '&';
    ListaEndereco.StrictDelimiter := True;
    /// Estou usando o HTTPDecode da unit HTTPApp
    ListaEndereco.DelimitedText :=
      HTTPDecode(aidHTTP.Get('http://republicavirtual.com.br/web_cep.php?cep=' +
      aTFieldCEP + '&formato=query_string'));

    aTFieldLogradouro := ListaEndereco.Values['tipo_logradouro'];
    aTFieldEndereco := ListaEndereco.Values['logradouro'];
    aTFieldBairro := ListaEndereco.Values['bairro'];
    aTFieldCidade := ListaEndereco.Values['cidade'];
    aTFieldUf := ListaEndereco.Values['uf'];
  finally
    aidHTTP.Free;
  end;
end;


Porém no delphi XE7 ta dando o erro abaixo

Erro
---------------------------
Debugger Exception Notification
---------------------------
message 'No mapping for the Unicode character exists in the target multi-byte code page'.



Creio que o problema seja nesta função nativa HTTPDecode da unit HTTPApp

Se eu uso assim
Código:
ListaEndereco.DelimitedText :=    aidHTTP.URL.URLDecode(aidHTTP.Get('http://republicavirtual.com.br/web_cep.php?cep=' +
      aTFieldCEP + '&formato=query_string'));


Não funciona, fica com char estranhos em letras acentuadas.
_________________
Quer uma bateria musical profissional completa em seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.hhopdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17338

MensagemEnviada: Ter Mai 08, 2018 3:46 pm    Assunto: Responder com Citação

Mudei para o ACBRCEP que resolveu meu problema
_________________
Quer uma bateria musical profissional completa em seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.hhopdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17338

MensagemEnviada: Ter Ago 06, 2019 10:21 am    Assunto: Consumir API CEP delphi Responder com Citação

Numa nova ocasião sem poder usar o acbrcep então consegui resolver o problema desta maneira
Código:
procedure pBuscaCEPNet(aTFieldCEP: String; var aTFieldEndereco, aTFieldBairro,
  aTFieldCidade, aTFieldUf: String);
var
  IdHTTP: TIdHTTP;
  TSConsulta: Tstringlist;
begin
  IdHTTP := TIdHTTP.Create(nil);
  TSConsulta := Tstringlist.Create;
  try
    IdHTTP.Request.UserAgent :=
      'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV2';

    /// Usar o httpdecode no projeto da unit HTTPApp, por causa
    /// dos acentos
    TSConsulta.Text := StringReplace
      (HTTPDecode(IdHTTP.Get('http://republicavirtual.com.br/web_cep.php?cep=' +
      aTFieldCEP + '&formato=query_string')), '&', #13#10, [rfreplaceAll]);

    // _ListaEndereco vira uma matriz e fazemos o acesso aos dados...
    { Passando o valor do endereço das variaveis para os campos }
    aTFieldEndereco := TSConsulta.Values['TIPO_LOGRADOURO'] + ' ' +
      TSConsulta.Values['LOGRADOURO'];
    aTFieldBairro := TSConsulta.Values['BAIRRO'];
    aTFieldCidade := TSConsulta.Values['CIDADE'];
    aTFieldUf := TSConsulta.Values['UF'];
  finally
    /// Limpando da memoria
    TSConsulta.Free;
    IdHTTP.Free;
  end;
end;


Delarar no uses do projeto HTTPApp
_________________
Quer uma bateria musical profissional completa em seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.hhopdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10445
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qui Ago 22, 2019 9:46 am    Assunto: Responder com Citação

Você pode utilizar o código do acbr, pois ele utiliza synapse, não utiliza indy e não precisa instalar.



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB