Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 27/02/16, 20:58:17
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
utf8

Pues eso, la ñ esta desaparecida, y en el php si se ve, ¿Alguna solucion con la clase ? Por que en el json se ve perfectamente, en minuscula eso si pero no se ven los caracteres raros. Gracias

Código:
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import com.herprogramacion.restaurantericoparico.R;
import com.herprogramacion.restaurantericoparico.Ranking_Amonestaciones_Cadetes;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;


public class Ranking_Amonestaciones_Adapter_Juveniles extends ArrayAdapter {

    // Atributos
    private RequestQueue requestQueue;
    JsonObjectRequest jsArrayRequest;
    private static final String URL_BASE = "http://cadetes.esy.es/2015/amonestados_juvenil.php";
    private static final String URL_JSON = "";
    private static final String TAG = "";
    List<Ranking_Amonestaciones_Cadetes> items;

    public Ranking_Amonestaciones_Adapter_Juveniles(Context context) {
        super(context,0);

        // Crear nueva cola de peticiones
        requestQueue= Volley.newRequestQueue(context);

        // Nueva peticion JSONObject
        jsArrayRequest = new JsonObjectRequest(
                Request.Method.GET,
                URL_BASE + URL_JSON,
                null,
                new Response.Listener<JSONObject>() {
                      @override
                    public void onResponse(JSONObject response) {
                        items = parseJson(response);
                        notifyDataSetChanged();
                    }
                },
                new Response.ErrorListener() {
                      @override
                    public void onErrorResponse(VolleyError error) {
                        Log.d(TAG, "Error Respuesta en JSON: " + error.getMessage());

                    }
                }
        );

        // Anyadir peticion a la cola
        requestQueue.add(jsArrayRequest);
    }

      @override
    public int getCount() {
        return items != null ? items.size() : 0;
    }

      @override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());

        // Referencia del view procesado
        View listItemView;

        //Comprobando si el View no existe
        listItemView = null == convertView ? layoutInflater.inflate(
                R.layout.ranking_amonestaciones_cadetes_row,
                parent,
                false) : convertView;


        // Obtener el item actual
        Ranking_Amonestaciones_Cadetes item = items.get(position);

        // Obtener Views
        TextView textoNombre = (TextView) listItemView.findViewById(R.id.tv_nombre_local);
        TextView textoTargetas = (TextView) listItemView.findViewById(R.id.tv_goles);
        TextView textoAmarillas = (TextView) listItemView.findViewById(R.id.tv_dobles);
        TextView textoDobles = (TextView) listItemView.findViewById(R.id.tv_amarillas);
        TextView textoRojas = (TextView) listItemView.findViewById(R.id.tv_rojas);
        TextView textoEquipo = (TextView) listItemView.findViewById(R.id.tv_equipo);


        // Actualizar los Views
        textoNombre.setText(item.getNombre());
        textoTargetas.setText(item.getTargetas());
        textoAmarillas.setText(item.getAmarillas());
        textoDobles.setText(item.getDobles());
        textoRojas.setText(item.getRojas());
        textoEquipo.setText(item.getEquipo());





       // Anyadir peticion a la cola



        return listItemView;
    }

    public List<Ranking_Amonestaciones_Cadetes> parseJson(JSONObject jsonObject){
        // Variables locales
        List<Ranking_Amonestaciones_Cadetes> rankingAmonestacionesCadetes = new ArrayList<>();
        JSONArray jsonArray= null;

        try {
            // Obtener el array del objeto
            jsonArray = jsonObject.getJSONArray("maxAmonestados");

            for(int i=0; i<jsonArray.length(); i++){

                try {
                    JSONObject objeto= jsonArray.getJSONObject(i);

                    Ranking_Amonestaciones_Cadetes RankingAmonestacionesCadetes = new Ranking_Amonestaciones_Cadetes(
                            objeto.getString("nombre"),
                            objeto.getString("totalTarjetas"),
                            objeto.getString("amarillas"),
                            objeto.getString("dobles"),
                            objeto.getString("rojas"),
                            objeto.getString("equipo"));


                    rankingAmonestacionesCadetes.add(RankingAmonestacionesCadetes);

                } catch (JSONException e) {
                    Log.e(TAG, "Error de parsing: " + e.getMessage());
                }
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }


        return rankingAmonestacionesCadetes;
    }
}

Última edición por Merche300 Día 02/04/16 a las 21:52:18.
Responder Con Cita


  #2  
Viejo 27/02/16, 23:07:56
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

El servidor ese devuelve las codificaciones que le da la gana y no es consistente.

La ñ minúscula no es una ñ aunque lo veas así en el navegador, si miras el código fuente de la página es RAFELBU& #241;OL C.F. (te pongo un espacio extra para que no salga la ñ) Es decir, ahí los caracteres especiales están codificados como si fuera ASCII con códigos numéricos (como los que usan al codificar las URL). El navegador lo entiende y lo cambia por la ñ, pero para Java es texto normal salvo que lo decodifiques.

Sin embargo en otros campos pone MAñES PADIAL, ahí claramente es un problema de no especificar la codificación. Es de suponer que es UTF-8 y se está interpretando como ISO Latin 1 que es el encoding por defecto en HTML y el que usa Volley si no tiene información en las cabeceras de la respuesta HTTP.

Lo ideal sería que el servidor estuviera bien hecho, pero como no va a ocurrir lo mejor es que arregles los desperfectos a mano (sustituyendo los caracteres raros por los correctos y arreglando las minúsculas/mayúsculas), tampoco hay tantos caracteres especiales y seguro que acabas antes tratando cada uno individualmente.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 27/02/16 a las 23:12:06.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 28/02/16, 00:00:26
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
 Cita: Originalmente Escrito por mocelet Ver Mensaje
El servidor ese devuelve las codificaciones que le da la gana y no es consistente.

La ñ minúscula no es una ñ aunque lo veas así en el navegador, si miras el código fuente de la página es RAFELBU& #241;OL C.F. (te pongo un espacio extra para que no salga la ñ) Es decir, ahí los caracteres especiales están codificados como si fuera ASCII con códigos numéricos (como los que usan al codificar las URL). El navegador lo entiende y lo cambia por la ñ, pero para Java es texto normal salvo que lo decodifiques.

Sin embargo en otros campos pone MAñES PADIAL, ahí claramente es un problema de no especificar la codificación. Es de suponer que es UTF-8 y se está interpretando como ISO Latin 1 que es el encoding por defecto en HTML y el que usa Volley si no tiene información en las cabeceras de la respuesta HTTP.

Lo ideal sería que el servidor estuviera bien hecho, pero como no va a ocurrir lo mejor es que arregles los desperfectos a mano (sustituyendo los caracteres raros por los correctos y arreglando las minúsculas/mayúsculas), tampoco hay tantos caracteres especiales y seguro que acabas antes tratando cada uno individualmente.
Muchas gracias,no tienes idea de lo que me has ayudado.


$data3 = str_replace(array("ñ"),"NY",$data2);

Bueno cambiar la ñ por los caracteres que pones arriba

Supuestamente la ñ viene a ser ny en valenciano, supongo que catalán también, y cambiando los caracteres es lo que e conseguido para que se vea RAFELBUNYOL.

Última edición por Merche300 Día 28/02/16 a las 00:04:53.
Responder Con Cita
  #4  
Viejo 28/02/16, 02:08:44
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
 Cita: Originalmente Escrito por Merche300 Ver Mensaje
Muchas gracias,no tienes idea de lo que me has ayudado.


$data3 = str_replace(array("ñ"),"NY",$data2);

Bueno cambiar la ñ por los caracteres que pones arriba

Supuestamente la ñ viene a ser ny en valenciano, supongo que catalán también, y cambiando los caracteres es lo que e conseguido para que se vea RAFELBUNYOL.
Existen infinidad de librerías de codificación y decodificación HTML en Java, que los &nbsp te los cambia por espacios, los &lt; por < etc. Supongo que alguna habrá que lo haga también con la ñ.
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 28/02/16, 08:15:47
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

¿Pero entonces el servidor lo controlas tú? El código que has puesto antes es PHP no Java. Para arreglar los otros caracteres o bien indicas que el content type tiene el charset utf8 o bien haces la conversión en el PHP a ISO latin antes de mandarlo.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 28/02/16, 08:16:34
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Existen infinidad de librerías de codificación y decodificación HTML en Java, que los &nbsp te los cambia por espacios, los &lt; por < etc. Supongo que alguna habrá que lo haga también con la ñ.
kriogeN si, &Ntilde mayusculas y &ntilde para minusculas,pero vuelve a reconocer la ñ y sale un rombo negro con un interrogante blanco en el fondo, no se porque pero asi es, al menos en mi caso
Responder Con Cita
  #7  
Viejo 28/02/16, 08:19:18
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
 Cita: Originalmente Escrito por mocelet Ver Mensaje
¿Pero entonces el servidor lo controlas tú? El código que has puesto antes es PHP no Java. Para arreglar los otros caracteres o bien indicas que el content type tiene el charset utf8 o bien haces la conversión en el PHP a ISO latin antes de mandarlo.
En este caso lo controlo yo
Responder Con Cita
  #8  
Viejo 28/02/16, 08:31:26
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Dado que sólo genera un JSON lo suyo es que las cabeceras estén bien generadas en el PHP:

header('Content-Type: application/json; charset=utf-8');

O text/plain si te diera algún problema

P.D. También puede ser que el problema de codificación venga de otro sitio, por ejemplo al leer de la base de datos. En algún sitio se asume que es una codificación siendo otra, mientras antes se arregle en la cadena de transformaciones mejor.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 28/02/16 a las 08:42:14.
Responder Con Cita
Gracias de parte de:
  #9  
Viejo 29/02/16, 14:15:19
Array

[xs_avatar]
c2alvaro c2alvaro no está en línea
Miembro del foro
 
Fecha de registro: may 2015
Localización: Venezuela
Mensajes: 67
Modelo de smartphone: Galaxy S4 mini
Tu operador: Movistar
Yo uso esto en mi WebService con PHP y me funciona MUY BIEN mostrando sin problemas las ñ en android.

Yo devuelvo un array en json desde PHP

Cuando necesito llenar el array campo por campo, el campo NOM1 es nombre completo y logico que vendra una ñ por ahi:
$datos1["NOM1"]=utf8_encode($row["NOM1"]);

Y tambien cuando paso todo el array devuelto en la consulta sin necesidad de tratamientos especiales:

$datos[]=array_map('utf8_encode', $row);

Saludos.
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 19:40:44 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /