¿Cómo puedo eliminar caracteres no reconocidos que vuelven de un servicio web?
Estoy trabajando en una aplicación que llama un servicio web de descanso. A veces, las respuestas xml contienen caracteres que el teléfono no puede mostrar. Al mostrar estos caracteres, un cuadro vacío se muestra en su lugar. Me gustaría filtrar estos personajes. ¿Cómo puedo detectar si un personaje puede ser mostrado en la pantalla?
Algunos caracteres específicos incluyen:
- Cómo usar onclicklistener para ver la cuadrícula
- Cómo configurar el valor predeterminado del widget switch en android
- Declaración de atributos elegibles en Android
- ¿Por qué SwitchPreference no muestra animación al cambiar de encendido a apagado y viceversa?
- @ En el archivo AndroidManifest.xml
http://www.fileformat.info/info/unicode/char/0094/index.htm http://www.fileformat.info/info/unicode/char/0080/index.htm http: //www.fileformat. info / info / unicode / char / 0092 / index.htm
- Valor de dimensión definido de Android XML que produce resultados inesperados
- ¿Qué sucede si la minSdkVersion es menor que la targetSdkVersion?
- Permitir que EditText se desplace mientras está deshabilitado
- CollapsingToolbarLayout | Aspectos de desplazamiento y diseño
- Android XmlPullParser UTF-8 problema
- Android spinner eliminar dropdown vertical extra espacio / padding
- Traducir fácilmente xml en Android
- Cómo hacer navegación personalizada ver animaciones como ésta
Android soporta las siguientes codificaciones
- Xml.Encoding ISO_8859_1
- Xml.Encoding US_ASCII
- Xml.Encoding UTF_16
- Xml.Encoding UTF_8
US_ASCII no debería causar ningún problema.
Para ISO_8859_1 puede comprobar http://en.wikipedia.org/wiki/ISO/IEC_8859-1 para los caracteres de control 0x00-0x1f y 0x7f-0x9f y filtrarlos. Y por supuesto utilice una fuente a juego.
Utilizando UTF_8 o 16 es más complejo, lea Joels El mínimo absoluto Cada desarrollador de software Absolutamente, Positivamente debe saber acerca de Unicode y conjuntos de caracteres
Es posible que encuentre útil esta lista de correo.
En primer lugar, intenta obtener el juego de caracteres predeterminado de tu dispositivo con:
Charset.defaultCharset();
A continuación, intente obtener el conjunto de caracteres de su XML buscando en pseudo-atributo de la declaración XML o en el encabezado Content-Type de la llamada HTTP.
Por ejemplo:
<?xml version="1.0" encoding="utf-8" ?>
o
Content-Type: text/html; charset=utf-8
Si el conjunto de caracteres predeterminado de su dispositivo es diferente del conjunto de caracteres de XML, debe prestar atención al manejar nuevas cadenas con:
new String( bytes);
porque si se olvida de especificar la codificación correcta, Dalvik utilizará la codificación por defecto del dispositivo con errores de visualización plausibles.
Recuerde utilizar:
new String( bytes, encoding);
Parece que puedo llamar a Character.isIdentifierIgnorable()
en cada carácter y no incluirlo si es ignorable. Character.isISOControl()
probablemente también funcionará.