[DELPHI] Caracteres Especiais JSON Get com INDY

18/01/2019

0

Estou utilizando o Indy 10 para fazer a leitura de um JSON e armazenando ele em uma variável String.
No JSON vem com uns caracteres especiais, ao tratar eles para UTF-8 alguns são corrigidos porém tem outros que eu não consigo converter?

Alguém tem alguma ideia de como fazer para tratar?

Segue código
IdHTTP1.Create(nil);
IdHTTP1.Request.CustomHeaders.Add('Authorization: ' + Q_Parceirocctokenparce.AsString).ToString;
IdHTTP1.Request.ContentType := 'application/json';
json:= UTF8ToString(IdHTTP1.Get(Q_Linkscurllinlink.AsString));


No exemplo do Código ele me retorna "Código" e tratado ele fica "Código", porém a cidade AVARÉ me apresenta "AVARÃ?".
Déverson Rando

Déverson Rando

Responder

Posts

18/01/2019

Fabricio Kawata

Olá Déverson! Supondo que o conteúdo do JSON que você está lendo esteja codificado para UTF-8, ao invés de usar o método UTF8ToString, tente usar o UTF8Decode.

Abraço!
Responder

18/01/2019

Déverson Rando

Olá Déverson! Supondo que o conteúdo do JSON que você está lendo esteja codificado para UTF-8, ao invés de usar o método UTF8ToString, tente usar o UTF8Decode.

Abraço!


Boa Tarde Fabricio,

Segue o mesmo problema, Estou utilizando Delphi XE7 e o banco de dados PostgresSQL.
De acordo com o fornecedor da API o charset deles já é UTF8.

Segue trecho do código e resultado.

IdHTTP1.Create(nil);
TIdSSLIOHandlerSocketOpenSSL.Create(nil);
IdHTTP1.HandleRedirects := True;
IdHTTP1.Request.ContentType := 'text/html';
IdHTTP1.Request.CharSet := 'UTF-8';
IdHTTP1.Request.CustomHeaders.Add('Authorization: ' + token).ToString;
IdHTTP1.Request.ContentType := 'application/json';
json:= IdHTTP1.Get(url+url_comp+filtro);
Memo_Json.Text := UTF8Decode(json);


Trecho do JSON

[{"cont_id":879,"cont_tipo":2,"cont_pessoa":1,"cont_nome_fantasia":"Código 440 - NF. FULL"}]
[{"cont_cidade":"AVAR�?","cont_estado":"SP"}]
Responder

30/07/2024

Douglas Morette

opa preciso desta mesma ajuda.. se alguém poder nos ajudar
Responder

31/07/2024

Arthur Heinrich

Usei o notepad para criar o arquivo teste.txt e adicionei ao seu conteúdo as seguintes linhas:
Código
AVARÉ

Ao exibir o conteúdo do arquivo na janela CMD, obtenho:

C:\\App>type teste.txt
C├│digo
AVARÉ

Ao alterar a Code Page para 1252 obtenho o mesmo resultado que você:

C:\\App>chcp 1252
Active code page: 1252

C:\\App>type teste.txt
Código
AVARÉ

Já utilizando a Code Page 65001, que interpreta UTF-8, fica tudo correto:


C:\\App>chcp 65001
Active code page: 65001

C:\\App>type teste.txt
Código
AVARÉ
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar