Problemas com acentuação no fwrest

Bom Dia, estou utilizando a classe fwrest() para acessar uma api, onde alguns campos existem acentuação, estes campos precisam ser importados da mesma maneira que esta na api. Fiz uma chamada nesta api e tomo como exemplo o retorno do campo nome_solucao onde seu conteúdo é "MENTORIA INDIVIDUAL: PDL – PROGRAMA DE DESENVOLVIMENTO DE LÍDERES E DE EQUIPE",

porém quando eu chamao a classe Fwrest() este campo é retornado desta maneira "nome_solucao":"MENTORIA INDIVIDUAL: PDL \u2013 PROGRAMA DE DESENVOLVIMENTO DE L\u00cdDERES E DE EQUIPE" , depois no meu fonte eu deserializo o retorno para dentro de um objeto, onde o conteudo do campo também vem "nome_solucao":"MENTORIA INDIVIDUAL: PDL \u2013 PROGRAMA DE DESENVOLVIMENTO DE L\u00cdDERES E DE EQUIPE". Tento usar o decodeutf8() neste campo e nao surte o efeito desejado fica assim

DecodeUTF8(oPropos:orcamento:NOME_SOLUCAO, "cp1252") "MENTORIA INDIVIDUAL: PDL – PROGRAMA DE DESENVOLVIMENTO DE L�?DERES E DE EQUIPE"

Verifique que ele decodificou o codigo \u2013 para -, porem o codigo \u00cd não foi transformado para Í e sim para �?.

Complementando a informacao, fiz o teste tambem da seguinte maneira, nao usei o FwDeserialize() usando JsonObject:New(), peguei o campo nome_solucao pelo oJson:getJsonTExt e Pelo oJson:GetJsonObject, e usei o decode tambem neles, o problema persite.

Será que existem codigos na tabela enconding cp1252 o qual o advpl nao reconhece??

Em anexo segue documento com os prints do codigo-fonte tambem da tabela cp1252 , da tela do retorno da api pelo soapui.

Peço orientação de como tratar estes campos corretamente, pois tem outros campos que o protheus faz corretamente. exemplo:

Campo sge_acao onde o conteúdo é "sge_acao":"Interven\u00e7\u00e3o - Consultoria Gest\u00e3o" e ao usar o decodeutf8 apos deserializar ele retorna corretamente para ser gravado no campo memo do protheus.

DecodeUTF8(oPropos:orcamento:SGE_ACAO, "cp1252") "Intervenção - Consultoria Gestão"

compartilhar
  • Bom dia Felipo, numa ferramenta como o postman, esta api demonstra desta mesma forma o retorno? Realmente acento propriamente dito não tenho problemas, está mais na forma como criam o json do que no decode dele, quando fizeram o encode devem ter utilizado esta maneira de tratar, se existir a possibilidade de chegar no fornecedor da api e pedir para ele tratar de outra forma, seria uma boa.

    Douglas Bichir   01 de Dec de 2020
  • Alias faz um teste, dentro do decode,força um encodeutf8, tipo decodeutf8(encodeutf8(oPropos:orcamento...

    Douglas Bichir   01 de Dec de 2020
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl fwrest decodeutf8 ou faça a sua própria pergunta.