Atenção com o uso sugerido pelo Guilherme. A RFC que estabeleceu o Content-Type: application/json definiu como padrão o encode para utf8 este tipo de conteúdo e formato.
Indicar no header o charset é de fato o jeito certo, mas não é garantia de não sofrer com efeitos colaterais nas leituras dos browses e webviews por ter saído do padrão de encode para application/json.
Ao que entendi, você recebeu o conteúdo em formato UTF8, você precisa fazer o decode desse valor, tente utilizar a função DecodeUTF8 no retorno da API:
http://tdn.totvs.com/display/tec/DecodeUTF8
Isso é necessário, pois por padrão, o AppServer trabalha com windows-1252.
Estou com problema semelhante, tentei usar o DecodeUTF8, mas ele retorna nil e no console do servidor aparece a mensagem “Warning (DecodeUtf8) Invalid conversion from utf-8 to cp1252”
Tem alguma outra função que posso usar ou vou ter que tratar caracter por caracter para remove os inválidos?
O retorno nulo do DecodeUTF8 é para quando o conteúdo já tinha sofrido decode antes. Para os casos que isso acontecer deve ser utilizado o valor antes de passar na função como valor decodado.
cStr := 'algum valor utf8'
cNewStr := DecodeUTF8(cStr)
if cNewStr == nil
cNewStr := cStr
endif
Josimar, identifiquei o problema aqui.
Na API que estamos consumindo existe no meio do texto alguns emojis tipo (https://getemoji.com/ ) adicionei o link dos emoji porque quando colo um aqui não deixa salva o comentário. Quando chama o DecodeUT8() e tem algum emoji ai retorna nil, quando não tem o emoji funciona certo.
Terei que fazer algum tratamento para remove os emojis antes de usar o DecodeUTF8.