Java - Problemas con ficheros

 
Vista:

Problemas con ficheros

Publicado por Jin (3 intervenciones) el 25/07/2007 18:30:47
Hola a todos.

Bueno, pues resulta que tengo un pequeño problema. Tengo una aplicación en la cual tengo un JEditorPane en el que cargo mediante URL un documento HTML que está codificado en UTF-8, al igual que el documento java.

El caso es que el documento se carga y se lee perfectamente, pero al guardarlo en un fichero, me realiza el almacenamiento bajo codificación ANSI, con lo cual, los caracteres especiales no se ven.

Mi pregunta es: ¿Cómo puedo hacer para forzar a que guarde el fichero en UTF-8?

Os dejo aquí el código:

import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

public class P extends JDialog implements ActionListener
{
private JButton Volver,Guardar;
private JScrollPane scroll;
private JEditorPane html;

public P()
{
setTitle("Prueba Guardar"); //Título
setSize(800,600); //Tamaño
setResizable(false); //No redimensionar la ventana
setLocationRelativeTo(null); //Centrar Ventana


getContentPane().setLayout(null); // sin adminitrador de diseño

IniciarComponentes();

//Hacer visible la ventana
setVisible(true);
}

public void IniciarComponentes()
{
//Creación de los botones
Guardar=new JButton("Guardar");
Guardar.addActionListener(this); //añadirle el oyente
Guardar.setBounds(105,510,100,50);
getContentPane().add(Guardar); //añadirlo

Volver=new JButton("Volver");
Volver.addActionListener(this); //añadirle el oyente
Volver.setBounds(345,510,100,50);
getContentPane().add(Volver);

//Creacion del Scroll y etiqueta html
html=new JEditorPane();
scroll=new JScrollPane(html);
html.setContentType("text/html"); // indica que el tipo de texto que contiene es html
html.setEditable(false); // texto no editable

//Cargar la página que corresponde
this.CargarPag();

getContentPane().add(scroll);
scroll.setBounds(5,5,785,500); // establece la posición del scroll con los dos primeros parámetros y su tamaño con los dos últimos
}

//Implementación del ActionListener (Oyente de Acciones) de la clase
public void actionPerformed(ActionEvent ev)
{
if(ev.getSource()==Volver)
{
/*this.setVisible(false);
Padre.setVisible(true);*/
}
else if(ev.getSource()==Guardar)
{
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showSaveDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION)
{
String nombreArchivo = chooser.getSelectedFile().getPath();
try
{
File file = new File (nombreArchivo);
int valor;
//Object[] valores={"Si","No","Cancelar"};
if(file.exists())
{
valor=JOptionPane.showConfirmDialog(this,"El archivo ya existe.\n ¿Deseas sobrescribirlo?","Título",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if(valor==0) //Quiero sobreescribir
{
/*FileWriter out = new FileWriter(file);
String text = html.getText();
out.write(text);
out.close();*/

FileWriter out = new FileWriter(file);
out.write(html.getText());
out.close();
}
}
else
{
/*FileWriter out = new FileWriter(file);
String text = html.getText();
out.write(text);
out.close();*/

FileWriter out = new FileWriter(file);
out.write(html.getText());
out.close();
}
}
catch (IOException e1)
{
JOptionPane.showMessageDialog(this, "No se Pudo Guardar '" +nombreArchivo + "'","Error de Escritura",JOptionPane.ERROR_MESSAGE);
}
}
}
}

//Implementación del método que carga páginas
private void CargarPag()
{
java.net.URL ruta;

ruta=P.class.getResource("P1.html");
try
{
html.setPage(ruta);
}
catch(java.io.IOException e)
{
JOptionPane.showMessageDialog(this,
"No se ha podido conectar con la página.\n",
"Error",JOptionPane.ERROR_MESSAGE);
}
}

public static void main(String argv[])
{
new P();
}
}


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

RE:Problemas con ficheros

Publicado por angel (537 intervenciones) el 26/07/2007 08:36:49
Quizas puedas probar a crear el String l vas a guardar como "utf-8"

String texto = new String(html.getText().getBytes(),"utf-8");

Y luego guardarlo en el fichero:

out.write(texto);

Suerte y 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

RE:Problemas con ficheros

Publicado por Jin (3 intervenciones) el 26/07/2007 13:05:42
Muchas gracias por tu respuesta, pero sigue sin valerme, porque es el fichero el que me lo guarda en ANSI. Es decir, crea el fichero en ANSI y le añade el texto en UTF-8, motivo por el cual después se ve mal.

La idea sería lo mismo que has expuesto pero a ser posible, que cree el fichero directamente en codificación UTF-8.

Muchas gracias de todas formas.
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

RE:Problemas con ficheros

Publicado por angel (537 intervenciones) el 26/07/2007 13:56:11
Echa un ojo a este link,,ai creo k si tiens como crear el fichero n utf8

http://www.exampledepot.com/egs/java.io/WriteToUTF8.html

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