Problema DecodeUTF8 vs Retorno API

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?

:warning: 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)