Problema com retorno acentos JSON + Rest + DataSnap
11/10/2017
0
http://localhost:8098/datasnap/rest/TControllerServico/EchoString/Caçador
Ele me retorna ao consumir um JSON:
{"result":["Ca\\u00E7ador"]}
No rest debuger ele exibe corretamente
{
"result":
[
"Caçador"
]
}
Sou novato no uso desta, existe alguma forma de eu retornar já no formato de acentuação ansi?
Desculpe derrepente haver outro tópico ser semelhante a outros mas não encontrei. Ficarei muito grato se puderem me dar um help.
Anderson Amaral
Posts
13/10/2017
Ermesom Lourenco
retorno.mensagem := StringReplace(retorno.mensagem, #$D#$A, '\\n', [rfReplaceAll, rfIgnoreCase]);
Ou seja, mapeando cada um deles.
Outro problema é este que está citando, que é o de acentos e ç, neste caso bastou converter tudo para utf-8 que resolveu:
Resposta.CharSet := 'utf-8';
Espero ter ajudado.
13/10/2017
Anderson Amaral
Com base no que comentaste pelo que verifiquei me parece que a codificação que ele faz exemplo: \\u00c7 corresponde ao charset UTF-7 de acordo com a w3.org, pelo que interpretei, conforme link abaixo:
https://www.w3.org/People/danield/unic/unitra.htm
Desta forma identifiquei no meu DSHTTPService - o evento: ONHTTPTrace, e nele incluí uma conversão manual no braço com stringreplace que sugeriu trocando cada letra por exemplo \\u00c7 para Ç e assim por diante, que aparentemente resolveu meu problema. Contudo, apenas trocando o CharSet no mesmo evento, com uso de:
AResponse.ContentType:= 'application/json; charset=utf-32' não resolveu.
Daqui a pouco pode ser em outro evento ou propriedade que tenha que interagir que pela minha pouca experiência neste contexto desconheça. Se alguem tiver uma sugestão melhor também ficarei muito grato pela contribuição e será sempre bem vinda.
De qualquer forma, meu problema aparentemente resolvido meu problema Ermesoml, muitíssimo obrigado pela tua contribuição, abraços!
13/10/2017
Anderson Amaral
Com base no que comentaste pelo que verifiquei me parece que a codificação que ele faz exemplo: \\\\\\\\u00c7 corresponde ao charset UTF-7 de acordo com a w3.org, pelo que interpretei, conforme link abaixo:
https://www.w3.org/People/danield/unic/unitra.htm
Desta forma identifiquei no meu DSHTTPService - o evento: ONHTTPTrace, e nele incluí uma conversão manual no braço com stringreplace que sugeriu trocando cada letra por exemplo \\\\\\\\u00c7 para Ç e assim por diante, que aparentemente resolveu meu problema. Contudo, apenas trocando o CharSet no mesmo evento, com uso de:
AResponse.ContentType:= ''application/json; charset=utf-8'' não resolveu.
Daqui a pouco pode ser em outro evento ou propriedade que tenha que interagir que pela minha pouca experiência neste contexto desconheça. Se alguem tiver uma sugestão melhor também ficarei muito grato pela contribuição e será sempre bem vinda.
De qualquer forma, meu problema aparentemente resolvido meu problema Ermesoml, muitíssimo obrigado pela tua contribuição, abraços!
Clique aqui para fazer login e interagir na Comunidade :)