Java - Obtener el valor en ASCII de un carácter codificado en UTF-8

 
Vista:

Obtener el valor en ASCII de un carácter codificado en UTF-8

Publicado por mononoke (1 intervención) el 13/11/2019 22:14:22
Hola! Resulta que necesito obtener los valores ASCII de una cadena de caracteres para poder codificar así cada carácter de dicha cadena en binario.
Mi fichero de entrada input es un InputStream (para leer cada caracter hago char c = (char) input.read()) y tengo el problema de que los caracteres normales me los lee bien y me coge el valor ASCII correctamente pero en cambio los carácteres especiales tipo vocales con acento, dieresis, ñ, etc. me los lee como UTF-8 (por ejemplo lee ï como ï) y por lo tanto no me los codifica bien.

He conseguido mediante el uso de InputStreamReader que me lea bien el caracter -adjunto código abajo- (en el ejemplo anterior, c = ï), sin embargo, al imprimir el supuesto valor ascii me devuelve 239 (por lo tanto en UTF-8) y no el 139 que me debería devolver como ASCII.

Cómo puedo arreglar este problema? Llevo tiempo intentándolo y no hay manera, no se que más hacer.


mi fichero input tiene esto: ïíì

InputStreamReader isreader = new InputStreamReader(input);
int data = isreader.read();
while(data != -1) {
char c = (char) data; //haciendo esto me imprime bien bien el caracter
System.out.println(c+" "+data); //pero sin embargo al imprimir el valor me lo imprime en UTF-8 según parece
data = isreader.read();
}

y me imprime:
ï 239
í 237
ì 236


Muchas gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Obtener el valor en ASCII de un carácter codificado en UTF-8

Publicado por pablo (239 intervenciones) el 14/11/2019 14:11:30
Hola mononoke, bueno lo que entiendo es que ya guardas esos datos en el archivo el problema es cuando lo vienes a leer no?
Sí es así podrías hacer lo siguiente:

1
2
3
public static List readFile(String filename) throws Exception {
    return Files.readAllLines(Paths.get(filename), StandardCharsets.US_ASCII);
}

Eso te devolverá una lista dicha lista la puedes recorrero hacer lo que quieras y el filename es la ruta donde se encuentra el archivo

https://stackoverflow.com/questions/47360576/converting-from-utf8-to-ascii-in-java

De está página tome la referencia

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar