Caracteres Especiales

Buenas!

Tengo un gran problema, o eso creo, la cuestion es que tengo un archivo con caracteres especiales (⅜€£¥♥♦♫♠☻☻☺☺░░■□), he luchado y buscado la forma de poder leerlos exactamente igual, pero no he podido, la idea cual es, poder enviar esos caracteres a una impresora, no se si estoy cometiendo algun error, pues las pruebas que estoy realizando, son: cargar el archivo y crearlo nuevamente y comparar su contenido, he llegado a tener algo un poco similar, pero existen algunos caracteres que no los interpreta bien lo que provoca que el archivo o impresion salga mal.

Gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

cómo lo cargas?

Necesitas enviar caracteres, o necesitar enviar bytes? Hay una gran diferencia. Si tienes bytes en un archivo y los quieres leer tal cual y enviarlos a la impresora porque se interpretan como caracteres de control o algo así, entonces léelos con un FileInputStream a un arreglo de bytes y luego eso escríbelo a la impresora con algún OutputStream.

Si necesitas leer ese archivo como texto, con caracteres "raros", entonces investiga en qué encoding fue hecho ese archivo (ISO-8859-1, UTF-8, etc) y tienes que crear un InputStreamReader que envuelva un FileInputStream, esto porque el InputStreamReader tiene un constructor que recibe otro InputStream (ahí le pasas el FileInputStream) y otro parámetro que es el encoding (ahí le indicas el que necesitas). Con eso puedes leer el archivo como texto y si usas el encoding correcto entonces se deben leer como están en el archivo.

Imagen de juanfranc520

OK

Muchas gracias!!!

Estuve leyendo un poco mas, y pude resolverlo utilizando una clase llamada FileChanel, y efectivamente leó el archivo y los almaceno en un array de bytes, creo un buffer y le especifico el tamaño, y me funciona correctamente, bueno como dices, con respecto al encoding, se me es dificil averiguar que encoding es debido a que es un archivo generado como una impresion a archivo, pero igual, logre solucionarlo.

Gracias

Imagen de ezamudio

binario

Entonces no necesitas realmente una cadena de caracteres "raros", sino que necesitas las secuencias de bytes que hay que enviar a la impresora. Eso lo debes encontrar en el manual de la impresora o del driver o en algún lugar así.

Para leer de un archivo efectivamente puedes usar FileChannel o un FileInputStream.

Imagen de juanfranc520

No, en realidad lo que se

No, en realidad lo que se hace es lo siguiente, creo una plantilla, ya sea en Word, Excel, Corel o XYZ, y lo que hago es imprimirla a un archivo, luego esto lo utilizo para enviarselo a la impresora y almacenarla en su memoria RAM para luego utilizarla como una Macro, y cuando desee imprimir algo, yo le envio a la impresora la informacion que deseo que imprima con su lenguaje PCL, lo que yo necesito, posicion X, Y, tamaño y luego uno la Macro con la informacion que deseo que salga, de este modo al momento de imprimir, o la impresion, el fisico sale la plantilla y la informacion, lo que sucedia era que la plantilla (Macro) es un archivo que efectivamente tiene caracteres raros o especiales que en realidad son informacion o comandos de impresion, pero resulta que habian algunos caracteres que no los reconocia en mi aplicacion Java y que al momento de enviarlos a la impesora provocaba que la plantilla (Macro) saliera mal (la imagen se dañaba, aparecian caracteres raros ,etc), pero ya con el buffer y el filechannel pude leerlo bien y enviarselo a la impresora y ahora si imprimi tal cual lo que se ve en pantalla.

No se si has conocido u oido hablar de los formatos electronicos.

Gracias.