Quiero obtener la codificación de una secuencia.Java: ¿Cómo puedo obtener la codificación de inputStream?
1er método: para utilizar el InputStreamReader.
Pero siempre devuelve la codificación del sistema operativo.
InputStreamReader reader = new InputStreamReader(new FileInputStream("aa.rar"));
System.out.println(reader.getEncoding());
de salida: GBK
segundo método - para utilizar el UniversalDetector.
Pero siempre devuelve nulo.
FileInputStream input = new FileInputStream("aa.rar");
UniversalDetector detector = new UniversalDetector(null);
byte[] buf = new byte[4096];
int nread;
while ((nread = input.read(buf)) > 0 && !detector.isDone()) {
detector.handleData(buf, 0, nread);
}
// (3)
detector.dataEnd();
// (4)
String encoding = detector.getDetectedCharset();
if (encoding != null) {
System.out.println("Detected encoding = " + encoding);
} else {
System.out.println("No encoding detected.");
}
// (5)
detector.reset();
de salida: null
¿Cómo puedo obtener el derecho? :(
InputStreamReader siempre usará la codificación de la plataforma. No intenta detectar la codificación en los archivos. ¿Qué tipo de archivos está ejecutando a través de UniversalDetector? En su ejemplo, utilizó un archivo RAR, que es un formato binario comprimido. Pruebe con un simple archivo de texto ASCII primero. – prunge
hola, he cambiado el tipo de archivo, salida 'Fortunes.txt': No se detectó codificación –
No parece detectar 'estándar' UTF-8 o UTF-16 sin una lista de materiales, pero funcionó para UTF-16 con una lista de materiales para mí. ¿Tal vez considere usar una biblioteca diferente para la detección de juegos de caracteres? [Este enlace] (http://stackoverflow.com/questions/499010/java-how-to-determine-the-correct-charset-encoding-of-a-stream) podría ayudar. – prunge