Foros del Web » Programación para mayores de 30 ;) » Java »

Posicion caracteres

Estas en el tema de Posicion caracteres en el foro de Java en Foros del Web. Hola,, imaginemos que tenemos que rellenar un fichero y en cada linea tendrá nombre, apellidos y edad El nombre ocupará como mucho 10 carcateres El ...
  #1 (permalink)  
Antiguo 22/03/2016, 03:23
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 13 años, 4 meses
Puntos: 21
Posicion caracteres

Hola,, imaginemos que tenemos que rellenar un fichero y en cada linea tendrá nombre, apellidos y edad

El nombre ocupará como mucho 10 carcateres
El apellido ocupará como mucho 6 carcateres
La edad ocupará como mucho 2 carcateres

Y nuestro fichero es este :

Lucas García18
Pepe Pérez 23

String apellido = "García"

apellido.lenght == 6 caracteres

pero como tiene el acento en un fichero plano ocupa 7 posiciones,como hago para que me de resultado 7 y no 6?

Gracias
__________________
Oye los consejos de todo el mundo, y sigue el tuyo.
Si te han ayudado deja un karma y si no te han ayudado pero vez util la información tb deja un karma xD
Sirdaiz
  #2 (permalink)  
Antiguo 22/03/2016, 04:59
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Posicion caracteres

No entiendo qué quieres hacer ni cuál es el problema, pero García son 6 caracteres, en fichero plano o grabado en piedra.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 22/03/2016, 05:20
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 13 años, 4 meses
Puntos: 21
Respuesta: Posicion caracteres

Cita:
Iniciado por Xerelo Ver Mensaje
No entiendo qué quieres hacer ni cuál es el problema, pero García son 6 caracteres, en fichero plano o grabado en piedra.
Perdon que no me he explicado bien, yo genero un fichero que solo aceptan 6 caracteres por linea por ejemplo:

Mi fichero:

García = para mi eso en el fichero ocupa 6 carácteres pero cuando el cliente procesa mi fichero en linux dice que para el ocupa 7 carácteres por acento

esto pasa con carácteres con acentos y ñ

:s
__________________
Oye los consejos de todo el mundo, y sigue el tuyo.
Si te han ayudado deja un karma y si no te han ayudado pero vez util la información tb deja un karma xD
Sirdaiz
  #4 (permalink)  
Antiguo 22/03/2016, 05:31
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Posicion caracteres

Eso se debe a que Linux y Windows usan encoding diferentes, y tú no les estás diciendo en ningún momento cuál es el encoding que tienen que utilizar, así que Windows lo guarda en Cp1252 y linux lo intenta leer como UTF8.

A la hora de leer o escribir ficheros que puedan llevar caracteres que no pertenezcan a ASCII siempre hay que indicar el encoding. Como consejo procura usar UTF8 siempre.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 22/03/2016, 05:48
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 13 años, 4 meses
Puntos: 21
Respuesta: Posicion caracteres

Cita:
Iniciado por Xerelo Ver Mensaje
Eso se debe a que Linux y Windows usan encoding diferentes, y tú no les estás diciendo en ningún momento cuál es el encoding que tienen que utilizar, así que Windows lo guarda en Cp1252 y linux lo intenta leer como UTF8.

A la hora de leer o escribir ficheros que puedan llevar caracteres que no pertenezcan a ASCII siempre hay que indicar el encoding. Como consejo procura usar UTF8 siempre.
Gracias por la respuesta, he realizado esto :
Código:
		String value = new String("García".getBytes("UTF-8"));
		System.out.println("value: " + value.length());
Cuyo resultado es 6, que encodig crees q usa para que le de resultado 7?

Un saludo
__________________
Oye los consejos de todo el mundo, y sigue el tuyo.
Si te han ayudado deja un karma y si no te han ayudado pero vez util la información tb deja un karma xD
Sirdaiz
  #6 (permalink)  
Antiguo 22/03/2016, 07:55
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Posicion caracteres

Cita:
String value = new String("García".getBytes("UTF-8"));
System.out.println("value: " + value.length());
¿Esto qué es?¿Te das cuenta de lo que estás haciendo con ese código? En realidad estás simulando leer un fichero utf8 en el encoding de tu sistema, no solucionándolo.

https://ideone.com/72lMsn

Fíjate, tienes tres casos en el enlace que te he puesto, viendo los resultados podemos llegar a la conclusión de que el encoding del sistema de Ideone es UTF8.

En tu caso si dices que te da 6, significa que tu sistema está en UTF8, lo que no coincide con lo que comentabas anteriormente. Si tu fichero está en UTF8 (puedes comprobarlo fácilmente con algún editor de texto como notepad++) implica que el cliente de linux no lo está leyendo como UTF8, lo que es más raro todavía.

Aclara primero el formato de salida del fichero y luego actúa en consecuencia a la hora de leerlo o que lo lean otros.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: caracteres, fichero, posicion, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:33.