Java - Imprimir un string en UTF-16LE

 
Vista:

Imprimir un string en UTF-16LE

Publicado por Manuel (4 intervenciones) el 06/11/2011 18:02:48
Hola a todos

Tengo que imprimir el contenido de unos strings en un fichero .rtf (en texto enriquecido) para posteriormente abrirlo con el WordPad.

Resulta que MS WordPad usa UTF-16LE mientras que los string creo que usan unicode. A la hora de escribirlo en el fichero y abrir el fichero con el Wordpad me salen los caracteres con acento cambiados.

He investigado mil cosas, pero no he encontrado solución. ¿Alguien tiene de cómo se puede hacer?
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

Imprimir un string en UTF-16LE

Publicado por Renzo (232 intervenciones) el 07/11/2011 16:06:30
Pueden poner el codigo que estas usando para generar el archivo para poder ayudarte?

Saludos


Espero haberte ayudado.

Te invito a visitar mi web: http://www.imagineanddo.com
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

Imprimir un string en UTF-16LE

Publicado por Manuel (4 intervenciones) el 13/11/2011 12:37:38
Ante todo, muchas gracias.

Te pongo una pequeña muestra del código, pues en mi programa imprimo cerca de 20 strings, pero lógicamente, con imprimir una sola cadena correctamente, el resto se hace igual.

Yo tengo un fichero plantilla en formato de texto enriquecido (.rtf) en el cual voy a introducir las cadenas de texto que tengo, sustituyendo un patrón (este patrón es "***"), y a continuación abriré el fichero con el WordPad:


try {

// Objetos para lectura de la plantilla
File archivoPlantilla = new File ("Plantilla.rtf");
FileReader fr = new FileReader (archivoPlantilla);
BufferedReader br = new BufferedReader(fr);
int inicio, fin, numCampo=0;

// Objetos para escritura del fichero salida
FileWriter archivoSalida = new FileWriter("Imprimir.rtf");
PrintWriter pw = new PrintWriter(archivoSalida);

// Lectura del fichero
String linea;
while((linea=br.readLine())!=null){

// Buscamos el patrón a sustituir
if (linea.contains("***")){
inicio = linea.indexOf("***");

if (numCampo==0){
// Insertamos el Nombre del interesado
linea = linea.substring(0, inicio) +
trans.getNombre() +
linea.substring(inicio+3);
}
}

..........................................
..........................................
.........................................

numCampo++;

pw.println(linea);
} // Fin del while

...........

Pues bien, en el fichero de salida, todos los caracteres que YA estaban en el fichero plantilla aparecen correctamente. En cambio, los que han sido introducidos desde el String "trans.getNombre()", salen con acentos cambiados y tal.

Nuevamente, muchas gracias
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

Imprimir un string en UTF-16LE

Publicado por Manuel (4 intervenciones) el 21/11/2011 20:53:05
¿Alguna ideilla?
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

Imprimir un string en UTF-16LE

Publicado por Manuel (4 intervenciones) el 29/11/2011 20:29:02
Al final lo he SOLUCIONADO. Voy a comentarlo aquí por si fuera de utilidad para alguien que llegue a la Web del Programador desde Google usando términos de búsqueda parecidos:

Pues bien, el problema está en que rtf o texto enriquecido es un formato de etiquetas, al uso de html. Por definición rtf está codificado en ASCII pero se pueden insertar caracteres UNICODE usando un carácter de escape.

Esto es, si quieres imprimir una 'á' -> printwriter.println ("\\'e1")

El carácter de escape es \' y e1 son dos caracters utf-8 que equivalen al código UNICODE de 16 bits correspondientes a la á. Por supuesto, ponemos \\' porque tenemos que escapar el primer carácter \

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