Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Acentos vem com caracteres especiais no body

Estou usando o flutter chamando uma API springboot e lá na API eu façi trativa de erro e quando da algum erro retorno alguma mensagem no detail dela. Se a mensagem do spring vem com acentos o flutter printa ela cheia de caracteres especiais, como resolvo isso? Imagem do Flutter Insira aqui a descrição dessa imagem para ajudar na acessibilidadeMensagem no springboot Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Imagem do flutter mais visível Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Olá! Entendo que esteja com dificuldades com a exibição de caracteres especiais no Flutter ao receber mensagens de erro da sua API Spring Boot.

Este problema geralmente ocorre devido a uma incompatibilidade de codificação de caracteres entre a API e o cliente (neste caso, o Flutter). A API Spring Boot pode estar enviando a resposta em uma codificação (como ISO-8859-1) enquanto o Flutter está tentando decodificar a resposta em outra codificação (como UTF-8).

Uma solução possível é garantir que ambas as partes estejam usando a mesma codificação. No seu caso, você pode tentar configurar a API Spring Boot para usar UTF-8, que é uma codificação comum para a web e suporta uma ampla gama de caracteres.

No Spring Boot, você pode configurar a codificação de caracteres da seguinte forma:

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
        stringConverter.setWriteAcceptCharset(false);
        stringConverter.setDefaultCharset(StandardCharsets.UTF_8);

        converters.add(0, stringConverter);
    }
}

Este código define o codificador de caracteres padrão para UTF-8.

No lado do Flutter, você pode usar o pacote 'dart:convert' para decodificar a resposta:

import 'dart:convert';

// ...

final response = await http.get('url_da_sua_api');
final decodedResponse = utf8.decode(response.bodyBytes);

Este código decodifica a resposta usando UTF-8.

Espero que isso resolva o seu problema. Por favor, teste e veja se os caracteres especiais são exibidos corretamente agora.

Espero ter ajudado e bons estudos!