[DELPHI] Caracteres Especiais JSON Get com INDY
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
No exemplo do Código ele me retorna "Código" e tratado ele fica "Código", porém a cidade AVARÉ me apresenta "AVARÃ?".
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
Curtidas 0
Respostas
Fabricio Kawata
18/01/2019
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!
Abraço!
GOSTEI 0
Déverson Rando
18/01/2019
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!
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"}]
GOSTEI 0
Douglas Morette
18/01/2019
opa preciso desta mesma ajuda.. se alguém poder nos ajudar
GOSTEI 0
Arthur Heinrich
18/01/2019
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É
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É
GOSTEI 0