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) {
y me imprime:
ï 239
í 237
ì 236
Muchas gracias de antemano!
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();
}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


0