0

Quierio hacer una consulta a una api en django pero en la aplicacion los textos me aparecen con simbolos raros ejemplo "c��mara" en lugar de "cámara", Lo raro es que usando postman los acentos aparecen bien pero en android salen estos simbolos. incluso si imprimo el resultado en el log tambien aparecen raros por lo que no parece un problema con el TextView.

en django uso lo siguiente serializers.py

from rest_framework import serializers

class PuntoSerializer(serializers.ModelSerializer):

    class Meta:
       model = Punto
       fields = ('id', 'nombre', 'tareas')

class RondinSerializer(serializers.ModelSerializer):
    puntos = PuntoSerializer(many=True, source="punto_set")
    cliente = serializers.StringRelatedField()
    planta = serializers.StringRelatedField()
    class Meta:
        model = Rondin
        fields = "__all__"

views.py

@api_view(["POST"])
def api_load_rondin(request):

   rondin = Rondin.objects.get(pk=request.POST.get("rondin_id"))

   serializer = RondinSerializer(rondin)

   return Response(serializer.data)

Ya intente poner el texto como html y tratar de cambiar la codificación de diferentes formas la ultima que intente es la siguiente dentro del código de android en java

 byte[] bytes = result.getBytes("UTF-8");
 result = new String(bytes);

Para hacer la consulta estoy usando la dependencia com.koushikdutta.ion

  • 1
    ¿Responde esto a tu pregunta? [¿Por que el Carácter inspector (�) aparece en algunos datos obtenidos de la Base de Datos?](https://es.stackoverflow.com/questions/59489/por-que-el-car%c3%a1cter-inspector-aparece-en-algunos-datos-obtenidos-de-la-base) – BetaM Jul 01 '20 at 01:29

1 Answers1

1

Tienes que decodificar en UTF8 el resultado, con esto:

 byte[] bytes = result.getBytes("UTF-8");

Lo que haces es codificar, aqui te hace falta la línea con:

 result = new String(bytes,"UTF-8");

En esta linea se decodifica con UTF8.

Saludos.

Omar
  • 780
  • 1
  • 3
  • 8