Foro de elhacker.net

Programación => Java => Mensaje iniciado por: PabloPbl en 6 Abril 2015, 04:47 am



Título: [Ayuda - Android] TextView no reconoce caracteres especiales <?>
Publicado por: PabloPbl en 6 Abril 2015, 04:47 am
Pues tengo un TextView que lo agrego desde el xml que por defecto lo dejo vacio para luego desde el código java poner algún texto como consecuencia de una acción de un botón.

Resulta que al momento de setear el texto del TextView desde el código, los caracteres especiales como las tilde por ejemplo, se muestran así <?> y no como debería ser.

He intentando metiendo una codificación UTF-8 dentro del xml donde va el TextView, pero nada, al momento de mostrarse no me reconoce esos caracteres.

¿Alguien sabe que tengo que especificar y cómo?


Título: Re: [Ayuda - Android] TextView no reconoce caracteres especiales <?>
Publicado por: Usuario Invitado en 6 Abril 2015, 13:30 pm
Prueba obteniendo los bytes del String en UTF8 y luego mantienes el UTF8 obteniendo un nuevo String a partir de HTML:

Código
  1. try {
  2.    String text = new String(c.getString
  3. ("TU_TEXTO").getBytes("ISO-8859-1"),
  4. "UTF-8");
  5.    String encodedText = Html.fromHtml(text).toString();
  6.    textView.setText(encodedText);
  7. }   catch(UnsuportedEncodeException e) {
  8.    // mostrar el error al usuario o en un log
  9.    }
  10. }


Saludos.


Título: Re: [Ayuda - Android] TextView no reconoce caracteres especiales <?>
Publicado por: PabloPbl en 6 Abril 2015, 15:42 pm
Hola Gus, muchas gracias de antemano.

Pero en la segunda linea estas haciendo referencia a una variable "c" si no me equivoco que no existe, y me da error.


Título: Re: [Ayuda - Android] TextView no reconoce caracteres especiales <?>
Publicado por: Usuario Invitado en 6 Abril 2015, 15:55 pm
En efecto, c es un Resources (obtiene los strings del XML). Pero prueba con:

Código
  1. String text = new String("TU_TEXTO".getBytes(), "UTF-8");

No le hemos pasado un Charset porque según veo en la API de Android, por defecto es UTF-8. Prueba a ver qué tal.


Título: Re: [Ayuda - Android] TextView no reconoce caracteres especiales <?>
Publicado por: PabloPbl en 6 Abril 2015, 16:36 pm
He probado el código pero sigue sin funcionarme

Lo he puesto de la siguiente manera:

Código
  1. try{
  2.                    String texto1 = "Ejecución";
  3.                    String text = new String(texto1.getBytes(), "UTF-8");
  4.                    String encodedText = Html.fromHtml(text).toString();
  5.                    tv1.setText(encodedText);
  6.  
  7.                    String texto2 = "Explosión";
  8.                    String text2 = new String(texto2.getBytes(), "UTF-8");
  9.                    String encodedText2 = Html.fromHtml(text2).toString();
  10.                    tv2.setText(encodedText2);
  11.  
  12.  
  13.                }
  14.                catch(Exception e) {
  15.                    Toast.makeText(this, "Error encodec", Toast.LENGTH_LONG).show();
  16.                }
  17.  

He descubierto que si agrego todo el texto que quiero que se muestre en el TextView, me lo hace y me lo muestra correctamente, pero si intento cambiar el valor del TextView desde el código Java me lo muestra mal. ¿No sera que algo debo especificar algo en mi código?


Título: Re: [Ayuda - Android] TextView no reconoce caracteres especiales <?>
Publicado por: Usuario Invitado en 6 Abril 2015, 17:00 pm
Imprime encodedText2, ¿el String mantiene las tildes?


Título: Re: [Ayuda - Android] TextView no reconoce caracteres especiales <?>
Publicado por: PabloPbl en 6 Abril 2015, 22:23 pm
He hecho la impresión de 3 formas y me muestra ese signo <?> en vez de las tildes, osea no mantiene las tildes:

Código
  1. Toast.makeText(this, encodedText, Toast.LENGTH_LONG).show();
  2. System.out.println(encodedText);
  3. Log.e("IMPRESIÓN", encodedText);
  4.  


Título: Re: [Ayuda - Android] TextView no reconoce caracteres especiales <?>
Publicado por: PabloPbl en 7 Abril 2015, 17:01 pm
Bueno después de cansarme y cansarme probando en busca de soluciones, di en el blanco.

Pues resulta que para me haga la codificación, tenia que si o si obtener los String del xml donde se guardan los Strings(string.xml) y de ahí hacer la codificación.

Código
  1. String text = newString(getString(R.string.activity_MostrarImagen_tituloEjecucion).getBytes(), "UTF-8");
  2. String encodedText = Html.fromHtml(text).toString();
  3. tv1.setText(encodedText);
  4.  

Pues lo que ya hacia era poner un String directamente en el código y no obteniéndolo del xml.

Por lo menos eso resolvió mi problema.

Salu2 y muchas gracias a todos.


Título: Re: [Ayuda - Android] TextView no reconoce caracteres especiales <?>
Publicado por: Usuario Invitado en 7 Abril 2015, 20:00 pm
Jaja, ya había leído de strings.xml pero pensé que era un poco redundante tener los Strings en un XML cuando el TextView puede cambiar de contenido en tiempo de ejecución y por ejemplo por intervención del usuario. Creo que debe haber una manera más práctica. Investigaré a ver que encuentro.


Un saludo.


Título: Re: [Ayuda - Android] TextView no reconoce caracteres especiales <?>
Publicado por: PabloPbl en 7 Abril 2015, 22:15 pm
xD, El string.xml mas que nada sirve para poder internacionalizar la aplicación, osea poder tener la app en distintos idiomas.

Tu tienes varios xml con los mismos punteros, solo que con diferentes valores, y a valores me refiero a el texto que usara la App para mostrar texto, pues esos valores los puedes poner en diferentes idiomas. Cada xml sera para un idioma en particular. Entonces cuando tu usas la App en una teléfono con un idioma en concreto, pues Android detectara que archivo xml se usara para la App, cabe destacar que para eso tienes que poner unos nombres a los xml para que Android sepa cual usar en cada caso.

Salu2  ;D


Título: Re: [Ayuda - Android] TextView no reconoce caracteres especiales <?>
Publicado por: Ernest_Droid en 9 Agosto 2015, 19:42 pm
hola :

Soy nuevo en este foro.

Estuve viendo  que muchos  tenian el  problema de mostrar un  texto  en un textview en tiempo de ejecución:

Nota: esto es para Android Studio.

Buscando en internet  encontre una solución:

1) En el archivo build.gradle, agregé la siguiente línea:

compileOptions.encoding = 'ISO_8859_1'

2) Luego recontruí el  proyecto (Rebuid Project)

3) Después cree el siguiente código:

public class Pantalla_menu extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pantalla_menu);

        TextView mensaje = (TextView) findViewById(R.id.mensaje_1);
        String mensajito = "< hola ñato, estoy en revisión >";
        mensaje.setText(mensajito);
    }
}


4) Volvi a recontruir el  proyecto (Rebuid Project)

5) Luego ejecute el programa y funcionó

Nota: tengo la imagen pero no se cargarla XD.