Esta utilidad determina la codificación de caracteres utilizada por un flujo binario que contiene datos XML. La codificación se determina utilizando las reglas que figuran en la Especificación XML, y el método se ha diseñado de forma que sea lo más rápido posible, sin hacer uso apenas de cadenas ni expresiones regulares.
Un ejemplo sencillo de uso sería:
InputStream in = ...; String encoding = detectEncoding(in); BufferedReader reader = new BufferedReader(new InputStreamReader(in,encoding));
Y a partir de este punto se pueden leer tranquilamente caracteres.
detectEncoding() toma un único parámetro - un InputStream que contiene los datos a leer. El InputStream debe soportar los métodos mark()/reset(), de lo contrario el llamante debe envolver el flujo en un BufferedInputStream antes de hacer la llamada. Una vez que el método ha finalizado, el flujo se encuentra posicionado en el carácter < de la declaración de documento XML (Esto significa que si ha habido byte-order-marks, los mismos se omiten).
El método devuelve la codificación detectada como cadena, utilizando el nombre canónico en java.io (ver Supported Encodings para la lista de nombres canónicos).
|
detectEncoding.java ( 5 Kb ) |