Boa tarde
Estou com problemas com a função DecodeUTF8 no retorno de uma API. O endpoint efetua o retorno em UTF-8, onde consigo confirmar confirmar isso pelo Postman e também pelos parâmnetros enviados no aHeader (prints em anexo)
O problema é que para tratar o retorno da função oRest:GetResult(), utilizo a função DecodeUTF8 visando a correção da acentuação, porém o retorno da mesma sempre é NULO. Pelo que verifiquei, a função só retorna NULO se os caracteres não estiverem no formato UTF-8.
Alguma idéia de como tratar essa questão?
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
Olá,
Quando a função DecodeUT8
retorna nulo, significa que a string não estava em UTF8 (possivelmente há exceções), visto que normalmente via REST no Protheus normalmente a string está em UTF8 ou Win1252, provavelmente sua string já esteja no encode Win1252.
Em situações como essa, validar o retorno costuma já corrigir o problema, caso seja nulo, mantem-se o valor anterior, algo assim:
cResult := DecodeUTF8(oRest:GetResult())
if cResult == nil
cResult := oRest:GetResult()
endif
O problema é que está em UTF-8
Porém em alguns casos os caracteres vêm diferentes
Abaixo segue o retorno da API para 2 documentos que possuem os caracteres “ção”, veja que no primeiro, onde apresenta erro de conversão, vem como “ção”. Já o segundo, que funciona corretamente, está como “ção” (prints em anexo)
Ambos estão no mesmo retorno da API (array)